go 变量及作用域

在这里插入图片描述
图中1,2,4的地址一样

  • x:=1 相当于先声明变量x,然后赋值1
  • x,err=f(1)相当于赋值所以地址一致
  • x,err1:=f(4) 没报重复声明的错误是因为后面有了个新的 err1,这样编译器就会认为重新声明的是后面的变量err1,前面的x只是赋值而已,所以地址也会一致

3,5的地址不一样

  • 3 的 xx,err:=f(3)相当于声明并赋值了一个新的变量xx,地址自然会变;
  • 5 的地址不一致的原因是在 {} ,这个和go的作用域相关,会优先查找块内的,找不到再以此找块外的
发布了48 篇原创文章 · 获赞 56 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/zhetmdoubeizhanyong/article/details/102711959