[Go 编程语言] golang 用 & 返回对象和直接返回对象有啥区别?

楼主这几天心血来潮,看了下 golang 语法(本身是 java 出身),发现一个让我疑惑的问题:

代码如下

写法一:

package factory type Api interface { Say(name string) string
} type SimpleApi struct {
} func (*SimpleApi) Say(name string) string { return "this is " + name
} func CreateApi(t int) Api { if t == 1 { // 只能这样写 return &SimpleApi{} } return nil
} 

写法二:

package factory type Api interface { Say(name string) string
} type SimpleApi struct {
} func (SimpleApi) Say(name string) string { return "this is " + name
} func CreateApi(t int) Api { if t == 1 { // 两种写法皆可 //return &SimpleApi{} return SimpleApi{} } return nil
} 

不能理解的是,为什么写法一不能写成 return SimpleApi{}

golang 不是可以隐式的进行取地址和解引用操作吗?
基于 golang 1.18

发表回复

您的电子邮箱地址不会被公开。