golang 函数内定义变量,推荐使用简短模式,例如:
1 | x := 1 |
由于作用域的关系,该模式容易定义跟全局变量同名的函数局部新变量,使用的时候要特别小心。
1 | //全局变量x |
输出:
1 | abc |
但是简短模式并不总是定义新变量,在重复使用的时候可能执行的是部分退化赋值操作
部分退化赋值的前提条件:最少有一个新变量被定义,且必须是在同一作用域
1 | package main |
输出:
1 | x: 100 &x: 0xc00006c080 |
从输出结果可以看出,前后两次打印的x地址都是同一个,故可以说明前后两次x是同一个变量,仅仅是值发生了变化。
部分退化赋值这一特性可以用在处理函数错误返回值,允许重复使用err变量,非常方便
1 | package main |