概述
方法
有接收者的函数
func (t *T)add(a,b int)int{ return a+b }
- 方法值接收者
无论调用者是对象还是对象指针,修改的都是对象副本,不影响调用者
语法糖:如果实现了接受者为值的方法,会隐含的实现一个接受者为指针的方法
- 方法指针接收者
无论调用者是对象还是对象指针,修改的都是对象本身,会影响调用者
语法糖:如果实现了接受者为指针的方法,会隐含的实现一个接受者为值的方法
package main import "fmt" type Person struct { age int } func (p *Person) IncreAge1() { p.age++ } func (p Person) IncreAge2() { p.age++ } func (p Person) GetAge() { fmt.Println(p.age) } func main() { p := Person{age: 0} p.GetAge() p.IncreAge2() p.GetAge() p.IncreAge1() p.GetAge() fmt.Println("---------------------") pt := &p pt.GetAge() pt.IncreAge2() pt.GetAge() pt.IncreAge1() pt.GetAge() } /* 0 0 1 --------------------- 1 1 2 */
通常使用指针类型作为接受者的原因:
使用指针类型能够修改调用者的值
使用指针类型可以避免在每次调用方法时复制该值,如果值的类型为大型结构体时,会更加高效
函数
指不属于任何结构体,类型的方法,即函数无接受者
func add(a,b int)int{ return a+b }
最后
以上就是热心泥猴桃为你收集整理的golang——方法和函数方法的全部内容,希望文章能够帮你解决golang——方法和函数方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复