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)
本文来自博客园,作者:vx_guanchaoguo0,转载请注明原文链接:https://www.cnblogs.com/guanchaoguo/p/17704032.html