卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章33932本站已运行390

(*variable) 和 *&variable 有什么区别?

(*variable) 和 *&variable 有什么区别?

问题内容

我正在使用 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 := *&xv := x 两个语句是相同的。

这意味着 *&employee.firstNameemployee.firstName 相同。

其中 employee 是指向结构体的指针,而 firstName 是该结构体的字段,则表达式 employee.firstName 实际上是 (*employee).firstName 的简写。

这意味着 *&employee.firstName 也与 (*employee).firstName 相同。

请注意,您应该始终更喜欢使用速记符号。

卓越飞翔博客
上一篇: Go 的垃圾收集器在使用时删除 ZeroMQ 套接字
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏