声明和初始化
//var name type
var a,b int
// 初始化,b进行了类型推断
var b=1
//
// 列表的形式进行声明和初始化
//tips: 初始化时等号两边变量数量和值的数量要相等
var (
x, y int
a, b = 1, "abc"
)
//x=0,y=0
//a=1,b=abc
作用域对变量的影响
相同作用域的两个同名变量,变量的地址相同
var x = 1
fmt.Printf("%p %d\n", &x, x)
x, y := 100, 100
_ = y
fmt.Printf("%p %d\n", &x, x)
//输出
0xc00001c250 1
0xc00001c250 100
//输出
不同作用域的两个同名变量,变量地址不同
//如果在相同作用域中 a的地址不变
var x = 1
{
fmt.Printf("%p %d\n", &x, x)
var x = 100
fmt.Printf("%p %d\n", &x, x)
}
//输出
0xc0000a6170 1
0xc0000a6180 100
//输出