* 和 &
在Go语言中,fmt.Println 函数用于打印信息到标准输出。当你使用 fmt.Println 打印一个变量时,你可以选择打印变量的值或者变量的地址。这里的区别主要在于你是想要打印一个指针指向的值,还是打印指针本身的值(即内存地址)。
-
fmt.Println(*ps3):- 这里
*ps3是对指针ps3进行了解引用操作,它获取了ps3指向的Person结构体的值。 - 因此,
fmt.Println(*ps3)会打印出Person结构体的值,包括其所有字段的值。
- 这里
-
fmt.Println(&ps3):- 这里
&ps3是取ps3的地址,它获取了指针ps3自身在内存中的地址。 - 因此,
fmt.Println(&ps3)会打印出指针ps3的内存地址,而不是它指向的Person结构体的值。
- 这里
举个例子,如果你有一个 Person 结构体,它可能看起来像这样:
go
type Person struct {
Name string
Age int
}
如果你创建了一个 Person 实例:
go
ps3 := new(Person)
fmt.Println(*ps3)会打印出{ },因为new(Person)会分配内存并初始化Person的字段为零值(对于字符串是空字符串,对于整数是0)。fmt.Println(&ps3)会打印出类似0x123456的内存地址,这是ps3指针在内存中的位置。
总结来说,*ps3 用于获取指针指向的值,而 &ps3 用于获取指针本身的地址。
时来天地皆同力,运去英雄不自由
浙公网安备 33010602011771号