Go语言中&和*的区别

  • &是取地址符。
  • *可以表示一个变量是指针类型,也可以表示指针类型变量所指向的存储单元,也就是这个地址所指向的值。(指针也是有地址的,所以也可以用&取地址)
package main

import "fmt"

type Person struct {
	name string
	age  int
}

func main() {
	yi := Person{
		name: "xiaoyi",
		age:  20,
	}
	fmt.Println("yi", yi, " &yi", &yi)

	er := &Person{
		name: "xiaoer",
		age:  22,
	}
	fmt.Println("er", er, " &er", &er)

	var san *Person = &Person{
		name: "xiaosan",
		age:  30,
	}
	fmt.Println("san", san, " &san", &san)
}

输出如下
yi {xiaoyi 20} &yi &{xiaoyi 20}
er &{xiaoer 22} &er 0xc000012030
san &{xiaosan 30} &san 0xc000012038

posted @ 2023-03-15 11:10  白黑黑  阅读(402)  评论(0)    收藏  举报