我看到这一段代码:
type TestStruct struct {
Field1 string `json,yaml:"field1"`
Field2 bool `json,yaml:"field2"`
Field3 []Foo `json,yaml:"field3"`
}
第一种 返回interface的方法:
func creator() interface{} {
return &TestStruct{}
}
第二种 返回interface的方法:
func creator() interface{} {
return TestStruct{}
}
我有2个问题:
1.
这里有: TestStruct{}
这里是对结构体的实现啊,但是声明函数的时候 为何是返回interface {}
呢?
应该返回的是 TestStruct 实例 才对啊?
2.为何这里两种返回方式有何区别,在得到这个对象之后,使用的时候有形式上的区别吗?
return &TestStruct{}
return TestStruct{}
"return TestStruct{}" 返回的是你定义的类型 TestStruct
都实现了 interface{}, 即可以作为函数的返回值; 他们的差异是由调用方来感知并处理的(reflect)
参考 https://zhuanlan.zhihu.com/p/...