變量的聲明,初始化
// 聲明變量
// 方式1,var name type
var name string
var age int
// 沒有賦值,默認(rèn)為該類型的零值,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)
零值
沒有明確初始值的變量聲明會被賦予它們的 零值。
零值是:
數(shù)值類型為 0,
布爾類型為 false,
字符串為 ""(空字符串)。
包級別變量,函數(shù)級別變量
包級別變量聲明了可以不使用,運行時不會報錯
package main
import "fmt"
var c, python, java bool
func main() {
var i int
fmt.Println(i, c, python)
}
函數(shù)級別變量聲明后必須使用,否則報錯
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
函數(shù)外的每個語句都必須以關(guān)鍵字開始(var, func 等等),因此 := 結(jié)構(gòu)不能在函數(shù)外使用。
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