我正在使用 exercism.com 学习 go,并阅读教学大纲中推荐的文档和文章。
现在我在结构中并找到了下一个代码
package main import "fmt" type Employee struct { firstName, lastName string salary int fullTime bool } func main() { employee := &Employee{ firstName: "Walddys", lastName: "Dorrejo", salary: 1200, fullTime: true, } fmt.Println("firstName", (*employee).firstName) }
但是错误地,我输入了 fmt.println("firstname", *&employee.firstname)
,这给我带来了与之前在代码块中使用的相同结果。
我的问题是,使用这个指针是否存在不同或相同?
&x
生成一个指向 x
的指针,而 *p
取消引用指针 p
。因此 *
和 &
有效地相互抵消,例如 v := *&x
和 v := x
两个语句是相同的。
这意味着 *&employee.firstName
与 employee.firstName
相同。
其中 employee
是指向结构体的指针,而 firstName
是该结构体的字段,则表达式 employee.firstName
实际上是 (*employee).firstName
的简写。
这意味着 *&employee.firstName
也与 (*employee).firstName
相同。
请注意,您应该始终更喜欢使用速记符号。
以上是(*variable) 和 *&variable 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!