new() 和struct{} 初始化的使用场景有那些

aiaa5505 · · 659 次点击
两种方式个人都不推荐,在工程中,很多时候需要通过构造函数完成一些除了赋值之外的初始化,比如注册到一个单例、加入一个事件回调。由于 go 没有伴生对象,以及更多的可见性封装,因此只有强制性的通过统一命名的函数来实现。 我们在项目中,更多采用: ```go //对象的简单赋值,尤其是针对多个属性时,确保一致 func NewXXX()*XXX{ //todo } ``` ```go //从内存或库中赋值 ··· func LoadXXX ()*XXX{ } 因为没有多态,当参数不同时,不得不追加 **ByYYY**的后缀。
#3
更多评论
更多是习惯问题吧,我更倾向 struct 这种形式。
#1
new得到的是指针 new(AA)==&AA{}
#2