猿问
下载APP

求教一个关于go的问题

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的一段代码,请教一下,函数的这三种绑定方法有什么区别?优缺点分别是什么?

李元昊
浏览 1192回答 1
1回答

pardon110

看起来是三种,实质是两种。传址与传值的区别,前者方法内的操作,会改变结构体数据,后者由于得到的是一个副本,相当于局部变量,用完也就丢了,不会导致源数据发生变化。更通俗的说法,前者对Student类型是其它语言中类实例的操作,后者更多类似于常规函数的调用(对形参的改变,不会变更实参变量)。当然如果副本也是一个地址,那另当别论了
打开App,查看更多内容
随时随地看视频慕课网APP
继续浏览精彩内容
慕课网APP
程序员的梦工厂
继续