变量的声明,初始化
// 声明变量
// 方式1,var name type
var name string
var age int
// 没有赋值,默认为该类型的零值,string的零值"",int的零值0
fmt.Println(name,age)
// 赋值
name = "亚里士多德"
age = 89
fmt.Println(name,age)
// 方式2,var name type = init value,声明变量时初始化化
var birthday string = "2022-2-2"
fmt.Println(birthday)
// 方式3,var name = init value,类型推断。如果变量有初始化值,就可以在变量声明中省略type
var height = 189
fmt.Println(height)
// 方式4,name := inti value,简短声明。所有变量必须有初始值
student := "Hans"
teacher,class := "Darse", 5
fmt.Println(student)
fmt.Println(teacher,class)
// 声明多个变量
var lenght,area int = 10,200
fmt.Println(lenght,area)
var (
title = "且介亭杂文"
author = "鲁迅"
read = 100
)
fmt.Println(title,author,read)
零值
没有明确初始值的变量声明会被赋予它们的 零值。
零值是:
数值类型为 0,
布尔类型为 false,
字符串为 ""(空字符串)。
包级别变量,函数级别变量
包级别变量声明了可以不使用,运行时不会报错
package main
import "fmt"
var c, python, java bool
func main() {
var i int
fmt.Println(i, c, python)
}
函数级别变量声明后必须使用,否则报错
package main
import "fmt"
var c, python, java bool
func main() {
var i int
fmt.Println(c, python, java)
}
报错
./prog.go:8:6: i declared and not used
函数外的每个语句都必须以关键字开始(var, func 等等),因此 := 结构不能在函数外使用。
package main
import "fmt"
k := 3
func main() {
var i, j int = 1, 2
c, python, java := true, false, "no!"
fmt.Println(i, j, k, c, python, java)
}
报错
./prog.go:5:1: syntax error: non-declaration statement outside function body