Go 语言变量定义注意点
优质
小牛编辑
151浏览
2023-12-01
简短模式的含义是定义的同时初始化
package main import "fmt" func main() { num := 10 num := 20 // 编译报错, 重复定义 fmt.Println("num = ", num) }
一定不要把 := 当做赋值运算符来使用
package main import "fmt" var num = 10 // 定义一个全局变量 func main() { num := 20 // 定义一个局部变量 fmt.Println("num = ", num) test() } func test() { fmt.Println("num = ", num) // 还是输出10 }
:= 只能用于定义局部变量,不能用于定义全局变量
package main import "fmt" num := 10 // 编译报错 func main() { fmt.Println("num = ", num) }
使用 := 定义变量时,不能指定var关键字和数据类型
package main import "fmt" func main() { //var num int := 10 // 编译报错 //var num := 10 // 编译报错 num int := 10 // 编译报错 fmt.Println("num = ", num) fmt.Println("num = ", num) }
变量组中不能够使用 :=
package main import "fmt" func main() { var( num := 10 // 编译报错 ) fmt.Println("num = ", num) }
通过 := 同时定义多个变量,必须给所有变量初始化
package main import "fmt" func main() { //num1, num2 := 666, 888 // 正确 num1, num2 := 666 // 报错 fmt.Printf("%d, %d\n", num1, num2) }
通过 := 同时定义多个变量,只要任意一个变量没有定义过,都会做退化赋值操作
package main import "fmt" func main() { // 定义一个变量num1 num1 := 10 // 同时定义两个变量num1和num2, 由于num2从来没有定义过, // 所以对于num1来说:=退化为赋值运算符, 而对于num2来说:=仍然是定义+赋值 num1, num2 := 20, 30 fmt.Println("num1 = ", num1) fmt.Println("num2 = ", num2) }
package main import "fmt" func main() { num1 := 10 num2 := 20 // 报错, 因为num1,和num2都已经被定义过 // 至少要有任意一个变量没有被定义过,才会退化赋值 num1, num2 := 30, 40 fmt.Println("num1 = ", num1) fmt.Println("num2 = ", num2) }
定义的局部变量或者导入的包没有被使用,那么编译器会报错,无法编译运行,但是定义的全局变量没有被使用,编译器不会报错,可以编译运行