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 @ 2023-09-15 08:49  vx_guanchaoguo0  阅读(282)  评论(0编辑  收藏  举报