我正在使用这个版本的 Go:
$ go version
go version go1.18 windows/amd64
当structA只有一个字段和B有两个或以上字段时结果不同,而且只有当参数类型是interface时才会出现这种情况。
我不确定这是否是一个错误:
package main
import (
"fmt"
)
func main() {
a := A{}
m("A", a, SetAI(&a))
b := B{}
m("B", b, SetBI(&b))
}
type A struct {
I int
S string
}
type B struct {
I int
}
func SetAI(a *A) A {
a.I = 10
return *a
}
func SetBI(b *B) B {
b.I = 10
return *b
}
func m(name string, arg1, arg2 interface{}) {
fmt.Println(name+":", arg1, arg2)
}
我期待这个输出:
A: {10} {10}
B: {10} {10}
相反,我得到了这个:
A: {0 } {10 }
B: {10} {10}
桃花长相依
相关分类