为什么我应该使用&StructName{}
创建结构体,而不是Struct{}
?我看到很多示例都使用前一种语法,即使在Effective Go Page中也是如此,但我真的不明白为什么。
附加说明: 我不确定用这两种方法是否能清楚地表达我的问题,所以让我精炼一下我的问题。
我知道通过使用&
,我将得到一个指针而不是值,但我想知道为什么要使用&StructName{}
而不是StructName{}
。例如,使用它有什么好处:
func NewJob(command string, logger *log.Logger) *Job {
return &Job{command, logger}
}
改为:
func NewJob(command string, logger *log.Logger) Job {
return Job{command, logger}
}