04_变量声明与作用域
使用 `var`、`:=` 和多重赋值,避免变量遮蔽。
Go 基础专题 04:变量声明与作用域
学习目标:使用
var、:=和多重赋值,避免变量遮蔽。
核心知识
var count int 声明零值,var count int = 2 显式指定类型和值,var count = 2 由编译器推断类型。函数内可以写 count := 2;短变量声明不能出现在函数外。:= 左侧在当前作用域至少要有一个新变量。赋值 = 修改已有变量,二者不要混淆。
package main
import "fmt"
func main() {
count := 1
count = count + 1
name, age := "Ada", 20
name, age = "Lin", age + 1
fmt.Println(count, name, age)
}
作用域由代码块决定。内层可以声明同名变量,但这会遮蔽外层名字。常见错误是 value, err := work() 在内层重新声明了 err,外层 err 仍是旧值。阅读时要关注花括号和 := 所在位置。包级变量可被包内多个文件访问,但共享可变状态会增加测试难度。
多重赋值会先计算右边再统一赋值,因此 a, b = b, a 可交换值。空白标识符 _ 用来明确丢弃返回值,但错误一般不应无理由丢弃。
逐步理解
判断 := 是否能用时,先看当前花括号内是否至少出现一个新名字。内层 if 中声明的同名变量是新变量,离开块后外层变量并未改变。遇到难懂的短声明,可把它改写成显式 var 与 =,再逐行跟踪绑定。返回的 err 不应因为 _ 方便就直接丢弃。
动手练习
练习:交换 a=3、b=5 后打印。答案:a, b = b, a,结果为 5 3。