Go中的方法与接收器


本文摘自网络,作者,侵删。

  • 作用:为了将函数与结构体绑定,类似于OOP中的对象与方法。

  • 格式

func (接收器变量 接收器类型) 方法名(参数列表) (返回参数){    //函数体 }

  • 接收器类型
    • 指针接收器:指针类型的接收器由一个结构体的指针组成,更接近于面向对象中的this,由于指针的特性,调用方法时,修改接收器指针的任意成员变量,在方法结束后,修改都是有效的。
    • 非指针接收器:Go语言会在代码运行时将接收器的值复制一份。在非指针接收器的方法中可以获取接收器的成员值,但修改后无效。
  • 如何选择
    • 在计算机中,小对象由于值复制时的速度比较快,所以适合使用非指针接收器。大对象因为复制性能低,适合使用指针接收器,在接收器和参数间传递时不进行复制,只传递指针。
    • 有修改成员变量的需求,用指针类型的接收器。
  • 测试
type Cat struct {
	Name string
	Age  int
}
func (c Cat) changeName1() {
	c.Name = "酷黑猫"
	fmt.Println("changeName1 中修改后:", c)
}
func (c *Cat) changeName2() {
	c.Name = "大花猫"
	fmt.Println("changeName2 中修改后:", c)
}
func main() {
	var fan = Cat{Name: "小番茄", Age: 20}
	fmt.Println("changeName1 之前:", fan)
	fan.changeName1()
	fmt.Println("changeName1 之后:", fan)
	fmt.Println(".....................")
	fmt.Println("changeName2 之前:", fan)
	fan.changeName2()
	fmt.Println("changeName2 之后:", fan)
}复制代码

本文来自:51CTO博客

感谢作者:mb6008e936aad4e

查看原文:Go中的方法与接收器

相关阅读 >>

Golang判断map是否存在的方法

利用Go实现快看漫画网页版自动点击“下一话”,中间无需手动操作,但有一点疑惑,望大佬们解答。

手撸Golang Go与微服务 saga模式之3

Golang中自定义包

Golang怎么debug

利用 Go/ast 语法树做代码生成

web安全学习方法与职业介绍-1

Go-grpc-rest环境搭建

Golang make和new区别

Golang之sync.pool对象池对象重用机制总结

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...