【发布时间】:2020-12-04 02:17:17
【问题描述】:
我有个问题理解为什么返回类型是接口时可以使用地址操作符
func NewReader() IReader {
return &Reader{}
}
但(当然)不是当返回类型是结构时
func NewReader() Reader {
return &Reader{} // cannot use &Reader literal (type *Reader) as type Reader in return argument
}
后面的函数签名是func MyFuncReader(r IReader),但reflect.TypeOf(r)是*main.Reader。
- 所以
IReader类型隐藏了它是指针的事实? - 函数签名
func MyFuncReader(r IReader)没有告诉我,指针或值已传递给函数?
样品
- 带有接口https://play.golang.org/p/1Db1Jybp0rP的完整示例
- 不带接口的完整示例https://play.golang.org/p/nPtu09yhe0C
【问题讨论】:
-
人们可以提出如何改进问题的建议已经是隐含的了。问可能无济于事。
标签: pointers go struct interface