为了账号安全,请及时绑定邮箱和手机立即绑定

求教一个关于go的问题

/ 猿问

求教一个关于go的问题

Go
李元昊 2019-04-24 15:13:15

type Student struct {

    Name string

    Age  uint

    Addr string

}

func (s *Student) ShowInfo() {

    log.Println("此人名叫托尼,今年11岁,家住二龙湖")

}

func (s Student) ShowDetail() {

    log.Println("此人名叫托尼,今年11岁,家住二龙湖")

}

func (Student) ShowDesc() {

    log.Println("此人名叫托尼,今年11岁,家住二龙湖")

}

以上代码为go的一段代码,请教一下,函数的这三种绑定方法有什么区别?优缺点分别是什么?

查看完整描述

1 回答

?
pardon110

看起来是三种,实质是两种。传址与传值的区别,前者方法内的操作,会改变结构体数据,后者由于得到的是一个副本,相当于局部变量,用完也就丢了,不会导致源数据发生变化。更通俗的说法,前者对Student类型是其它语言中类实例的操作,后者更多类似于常规函数的调用(对形参的改变,不会变更实参变量)。当然如果副本也是一个地址,那另当别论了

查看完整回答
1 反对 回复 2019-04-24

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信