这工作perferctly:
package main
import "fmt"
type Struct struct {
field string
}
func Fn(arg struct{field string}) {
fmt.Println(arg)
}
func main() {
Fn(Struct{"john"})
}
但是这给./main.go:12: cannot use Struct literal (type Struct) as type struct { field string } in argument to sub.Fn
:
main.go
package main
import "go_tests/sub"
type Struct struct {
field string
}
func main() {
sub.Fn(Struct{"john"})
}
子/ sub.go
package sub
import "fmt"
func Fn(arg struct{field string}) {
fmt.Println(arg)
}
在函数调用唯一的变化是Fn(Struct{"john"})
被替换sub.Fn(Struct{"john"})
为什么移动功能,另一种包装影响类型的逻辑? 链接的文档可以理解的。