golang的方法绑定的类型,什么时候传值,什么时候传指针?

golang的方法绑定的类型,什么时候传值,什么时候传指针?
下面两种写法都有看到,但不知怎么区分使用,请大佬指导一下:

func (s *Widget) Do() {
  //...
}

func (s Widget) Do() {
  //...
}
阅读 1.7k
1 个回答
package main

import "fmt"

type ABC struct {
    data string
}

//值传递
func (a ABC) delete() {

    a.data = ""
}

//指针传递
func (a *ABC) pdelete() {
    a.data = ""
}

func main() {
    A := ABC{"123"}
    fmt.Println(1, A.data)

    //值传递操作之后原值不变
    A.delete()
    fmt.Println(2, A.data)

    //指针传递之后,可以改变原值
    A.pdelete()
    fmt.Println(3, A.data)

}

/* 输出
1 123
2 123
3 */
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题