一般形式:
var identifier type
var name string
一次声明多个变量:
var identifier1, identifier2 type
var firstname lastname string
指定变量类型, 如果没有初始化,则变量默认为零值:
var v_name v_type
v_name = value
var name string
name = "honulu"
数值类型为0, 布尔类型为false,字符串为”“(空字符串),其他大部分为nil
- 分解值自行判断变量类型:
var v_name = value
var name = "honulu"
省略
var
:v_name := value
name := "honulu"
当:=
左侧没有声明新的变量,就产生编译错误
多变量声明:
var vname1, vname2, vname3 type vname1, vname2, vname3 = v1, v2, v3 //不需要声明类型,自动推断 var vname1, vname2, vname3 = v1, v2, v3 //出现在:=左侧的变量不应该是已经声明过的,不然出现编译失败 vname1, vname2, vname3 := v1, v2, v3
var age1, age2 int
age1, age2 = 1, 2
var age1 age2 = 1, 2
name1, name2, name3 := "ho", "nu", "lu"
全局变量声明:
var ( vname1 v_type1 vname2 v_type2 )
var (
a int
b bool
)
- 不带声明格式的声明
只能在函数体里出现.
func main() {
name, age := "HONULU", 2
}
声明了一个局部变量却没有在相同的代码块中使用它, 会得到编译错误, 单纯地赋值也是不够的, 这个值必须被使用.
全局变量是允许声明但不使用.
想要交换两个变量的值, 可以简单地使用a, b = b, a
, 但是两个变量类型必须是相同的.
空白标识符_
也可用于抛弃值, 如 _ , b = 5, 7
中5被抛弃.
_
实际上是一个只写变量, 你不能得到它的值. 这样做是因为 Go 语言中你必须使用所有被声明的变量, 但有时你并不需要使用从一个函数得到的所有返回值.
package main
import "fmt"
func main() {
_,numb,strs := numbers() //只获取函数返回值的后两个
fmt.Println(numb,strs)
}
//一个可以返回多个值的函数
func numbers()(int,int,string){
a , b , c := 1 , 2 , "str"
return a,b,c
}
输出结果:
2 str