下面两个程序运行结果是?
func main() {
i := 0
i, j := 1, 2
fmt.Printf("i = %d, j = %d", i, j)
}
func main() {
i, j := 0, 0
if true {
j, k := 1, 1
fmt.Printf("j = %d, k = %d\n", j, k)
}
fmt.Printf("i = %d, j = %d\n", i, j)
}
func test(i int) {
i := 0
fmt.Println(i)
}
i = 1, j = 2
j = 1, k = 1
i = 0, j = 0
形参已经声明了变量i,使用 := 再次声明是不允许的。
使用 :=
一次可以声明多个变量,例如:
i, j := 0, 0
j, k := 1, 1
:=
左侧存在新的变量时(如 k),那么已经声明的变量(如 j)会被重新声明。这并没有引入新的变量,只是把变量的值改变了。:=
左侧没有新变量编译报错。:=
这种简短变量声明只能用于函数中,用来初始化全局变量是不行的。:=
会拆分成两个语句,即声明和赋值。赋值语句不能出现在函数外部的。例如:
func sum(a int, vals...int) int {
total := a
for _, val := range vals {
total += val
}
return total
}
fmt.Println(sum(1)) // "1"
fmt.Println(sum(1, 2, 3, 4, 5)) // "15"
参数部分需要使用 slice... 来表示切片,例如
values := []int{1, 2, 3, 4, 5}
fmt.Println(sum(1, values...)) // "16"
图片及部分相关技术知识点来源于网络搜索,侵权删!