go小白请问各位大佬这三个关于指针的问题应该如何理解

CiuLuYheng · · 311 次点击 · 开始浏览    置顶
```go type Person struct{ name string age int } func main(){ p1:=“123” p2:=&p1 fmt.Println(p2)//打印出0xc21001e140 p3:=&Person{“ZhangSan”,18} fmt.Println(p3)//打印出&{ZhangSan 18} } ``` **为什么这里结构体指针打印出的是`&{}`的形式,而不是像`*int`、`*string`这些类型一样,打印出的是内存地址** ```go type Person struct{ name string age int } func setStruct (v *Person){ v.name = “LiSi” v.age = 20 } func main(){ p:=Person{“ZhangSan”,18} setStruct(&p) fmt.Println(p)//打印出{LiSi 20} } ``` **函数setStruct参数是一个结构体指针,为什么在函数中赋值时,不是用`*v.name`进行赋值而是直接用`v.name`** ```go type Person strcut(){ name string age int } func (p *Person) changeName(){ p.name = “Lisi” } func main(){ p1:=Person{“ZhangSan”,18} p1.changeName() fmt.Println(p1)//打印出{Lisi 18} } ``` **方法`changeName`中的接收器(`p *Person`)是一个结构体指针,为什么在调用这个方法时,不用`&p1.changeName()`就可以调用方法**

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

311 次点击  
加入收藏 微博
7 回复  |  直到 2021-10-26 19:37:36
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传