为了账号安全,请及时绑定邮箱和手机立即绑定

关于 * 与 &

为什么需要用到这么多& *取地址呀?刚接触go。我试了一下除了SetHash函数需要*其他地方都可以不用结果是一样的。好吧其实就是太多然后弄不清楚真正的意义也不知道什么作用望解答!

正在回答

1 回答

如果我们要写一个交换两个整数的函数:
func swap(a int, b int)  {
   t := a
   a = b
   b = t
}

func main()  {
   a := 1
   b := 2
   fmt.Println(a, b)
   swap(a, b)
   fmt.Println(a, b)
}

程序运行之后,你会发现a和b根本没有交换,因为传递给swap函数的只是值,相当于对a和b的副本进行了交换;
而如果用指针来实现:
func swap(a *int, b *int)  {
   t := *a
   *a = *b
   *b = t
}

func main()  {
   a := 1
   b := 2
   fmt.Println(a, b)
   swap(&a, &b)
   fmt.Println(a, b)
}
结果才是我们想要的。
因为要对传递给函数的变量进行修改,所以要用指针。


2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于 * 与 &

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信