一、如果receiver是指针类型
package main
import "fmt"
type Count struct {
count int
}
func main() {
c := Count{count: 0}
c.incr()
fmt服务器托管网.Println(c.count)
c2 := &c
c2.incr()
fmt.Println(c2.count)
}
func (c *Count) incr() {
c.count++
}
//打印结果 1 2
incr 方法的 receiver 是 Count 类型的指针。因此,既可以使用 Count类型的值,也可以使用指向 Count类型的指针来调用 incr 方法
二、如果receiver是值传递
package main
import "fmt"
type Count struct {
count int
}
func main() {
c := Co服务器托管网unt{count: 0}
c.incr2()
fmt.Println(c.count)
c2 := &c
c2.incr2()
fmt.Println(c2.count)
}
func (c Count) incr2() {
c.count++
}
//打印 0 0
//为什么是 0,因为这时候c.count只是在incr2函数内部进行运算,c变量只有一种Count类型的函数内部变量,改变该值就需要通过把receiver改成指针传递
在 Go 语言中,如果一个方法的 receiver 是某个类型的指针,那么该类型的值和指针都可以调用这个方法。这是因为当 receiver 是指针类型时,Go 会自动进行指针解引用,以便让你方便地对这个类型的值进行操作。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: CentOS7搭建k8s-v1.28.6集群详情
文章目录 1.灌装集群节点操作系统 1.1 设置hosts 1.2 设置nameserver 1.3 关闭防火墙 1.4 关闭Selinux 1.5 关闭Swap分区 1.6 时间同步 1.7 调整内核参数 1.8 系统内核升级 2.安装Docker 2.1 …