初始化带方法的结构体的方式选择?

2020-04-04 14:10:21 +08:00
 qW7bo2FbzbC0
1. func NewStruct (){Struct error}

还是

2. func (s Struct) Init()

大家倾向于用哪种?有啥优劣吗?
1765 次点击
所在节点    Go 编程语言
10 条回复
WilliamYang
2020-04-04 14:12:41 +08:00
第一种
useben
2020-04-04 14:26:59 +08:00
第一种。实现接口,方便依赖注入,面向接口而非实现开发
gamexg
2020-04-04 14:30:05 +08:00
第一种,不过经常第一种实际调用 Reset 方法。
scnace
2020-04-04 14:42:48 +08:00
大部分情况第一种,第二种的形式会用在实现某些 interface,比如
```go
for _,cmd:=range cmds {
cmd.Init()
// Others
}
```
(这里的 cmd 是某个抽象的 Interface,来避免使用一些全局的 init()方法
MikeLei
2020-04-04 19:52:10 +08:00
各位大佬,这是啥语言啊,结构体里面还允许有方法,那不就跟类差不多了嘛。
neoblackcap
2020-04-04 20:14:10 +08:00
@MikeLei 看那命名以及函数签名就知道是 golang 了
Mitt
2020-04-04 21:59:00 +08:00
@MikeLei C++里结构体也是允许有方法的
MikeLei
2020-04-04 22:00:42 +08:00
@neoblackcap
@Mitt
不好意思,没接触过 C++和 go,还是得拓宽视野。
tairan2006
2020-04-05 11:28:55 +08:00
第一种,官方一般也是
qW7bo2FbzbC0
2020-04-07 12:37:46 +08:00
感谢各位

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/659333

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX