目录
1、变量声明
第一种:指定变量类型,如果没有初始化,则变量默认为零值
var num1 int = 123
var num2 float32 // num2 没有赋值,默认为 0
package main
import "fmt"
var num1 int = 123
var num2 float32
func main() {
fmt.Println(num1)
fmt.Println(num2)
}
输出结果:
123
0
第二种:根据值自行判定变量类型
package main
import "fmt"
var num = 456
func main() {
fmt.Println(num)
}
输出结果:
456
第三种:如果变量已经使用 var 声明过了,再使用 := 声明变量,就产生编译错误
package main
import "fmt"
func main() {
var a int #这里a申明了两次,会报错
a := 1
fmt.Println(a)
}
//此时不会产生编译错误,因为有声明新的变量,因为 := 是一个声明语句
a := 1 相等于:
var a int
a =1
package main
import "fmt"
func main() {
//相当于var a string = "hello"
a := "hello"
fmt.Println(a)
}
2、多变量声明
//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3 // 和 python 很像,不需要显示声明类型,自动推断
vname1, vname2, vname3 := v1, v2, v3 // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误
// 这种因式分解关键字的写法一般用于声明全局变量
var (
vname1 v_type1
vname2 v_type2
)
3、全局变量和局部变量
package main
import "fmt"
var (
stu1 string
stu2 string
num1 int = 5
num2 int
)
func main() {
fmt.Println("num1=", num1)
stu2 = "zch"
num1 = 10
fmt.Println("stu1=", stu1)
fmt.Println("stu2=", stu2)
fmt.Println("num1=", num1)
fmt.Println("num2=", num2)
}
//输出结果为
num1= 5
stu1=
stu2= zch
num1= 10
num2= 0