参考下面的代码,返回变量地址或使用地址创建变量是否更好/更标准化/更方便?我知道您要修改相同结构的任何一种方法,但是我想知道哪种方法更干净?我也想知道这两种方式是否有优点/缺点。
type Thing struct {
}
func getThing() *Thing {
thing := Thing{}
// modify thing here
return &thing //return the address to the thing here
}
OR
type Thing struct {
}
func getThing() *Thing {
thing := &Thing{} //create the address to the thing here
//modify thing here
return thing
}
如果要使用该方法修改结构,则&Thing{}
是一个不错的选择。
示例:
type Thing struct {
data string
}
func (t Thing) Update1(data string){
t.data= data;
}
func (t *Thing) Update2(data string) {
t.data= data;
}
func getThing1() *Thing {
thing := Thing{}
thing.Update1("test")
return &thing
}
func getThing2() *Thing {
thing := &Thing{}
thing.Update2("test")
return thing
}
func main() {
now := getThing1()
fmt.Println(now.data)
now = getThing2()
fmt.Println(now.data)
}