结构体方法
结构体方法就是附加给结构体的函数。
为结构体定义方法,跟定义一个函数的唯一区别就是在func
关键字和函数名之间增加了方法接受者(receiver),如上例中的(u *User)
。
方法接受者可以被声明为类型的实例或者是类型的实例的指针。
上例中,因为SetName()
会修改实例的属性值,所以需要传递指针,以实现永久修改。
译者注
一般的,为结构体添加方法时,总是推荐传递实例的指针而非实例。
其一是因为Go语言总是值传递,会新增一份拷贝,从而多占内存;其二是我们往往需要修改实例的属性值,而不仅仅是读取它。
当然,推荐做法并非一成不变的教条,如果某种时候传递实例(需要一份拷贝)是更好的选择,那么应该打破这些“经验之谈”。
最后更新于
这有帮助吗?