楼主这几天心血来潮,看了下 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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.