从函数约定Golang返回地址

问题描述 投票:0回答:1

参考下面的代码,返回变量地址或使用地址创建变量是否更好/更标准化/更方便?我知道您要修改相同结构的任何一种方法,但是我想知道哪种方法更干净?我也想知道这两种方式是否有优点/缺点。

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
}
go struct standards
1个回答
0
投票

如果要使用该方法修改结构,则&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)
}

© www.soinside.com 2019 - 2024. All rights reserved.