golang 结构体带*号和不带的区别

先说结论

  • 就是指针引用和非指针引用
  • 调用没啥区别的
  • golang 会做自动转换 将指针转为非指针调用

代码演示

package main
import "fmt"
type T struct {
Name string
}
func (p *T) SetName(name string) {
p.Name = name
fmt.Printf("SetName t *T 的地址:%p\n", &p)
}
func (p T) GetName() string {
fmt.Printf("GetName t T 的地址:%p\n", &p)
return p.Name
}
func main() {
t := T{Name: "111"}
t.SetName("222")
fmt.Println("t 的 Name:", t.GetName())
(&t).SetName("2222")
fmt.Println("t 的 Name:", (&t).GetName())
}
####结果
![](https://img2023.cnblogs.com/blog/2697130/202309/2697130-20230915084939043-58598157.png)
posted @   vx_guanchaoguo0  阅读(317)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示