变量
变量(varible)是所有编程语言中必不可少的组成元素,在我们需要去操作内存上的数据时,如果直接使用内存地址去操作会非常麻烦,所以便有了变量,变量其实是对一块数据存储空间的命名,通过引用变量名来使用这块存储空间。
变量声明
以var
关键字开头,并且类型信息放在变量名之后,不需要分号结尾。可以单行声明,也可以多行声明。
var num int
var (
name string //字符串
isOk bool //布尔型
nums [10]int //数组
point *int //指针
v1 struct{} //结构体
v2 map[string]int //map
v3 func(a int)int //函数
)
上述例子声明之后没有赋值,则初始化为对应类型的零值。整形和浮点型变量默认值为0
;字符串变量默认值为空字符串
;布尔型变量默认值为false
;切片、函数、指针变量默认值为nil
变量初始化
var name string = "Badam" //常规声明
var age 18 //类型推导
num := 31 //短变量声明
a, b := 10, 20 //一次初始化多个变量
i, j := j, i //i, j互换
匿名变量
很多函数会返回多个值,但是我们并不需要都使用到,这时可以使用匿名变量:_
func person()(string, int){
return "Badam", 18
}
func main(){
_, age := person()
name, _ := person()
}
匿名函数不占用命名空间,不会分配内存。
短变量声明
短变量声明是在代码中常用的:=
在函数内部使用短变量声明的变量在函数外部不可以使用,最常用的例子是for循环
for i := 0; i < 10; i++{
fmt.Println(i)
}
fmt.Println(i) //在for循环外部不可以使用for循环定义的简短声明i
根据短变量声明我们引出了作用域
变量的作用域
var num = 31 //在函数体外声明,全局变量,可以使用在整个包内,也可以使用在外部包内(首字母大写)
var Num = 31 //可以在其他包内使用
func main(){
num := 31 //在函数内部声明,局部变量,作用域为函数内部,函数的参数和返回值也是局部变量
}
常量
常量(const)就是不变的值, 常量只能是bool ,整型,string, 浮点型,常量在定义是必须赋值。
const pi = 3.1415926
const e = 2.7182
const (
pi = 3.1415926
e = 2.7182
)
//声明多个常量时,如果省略则表示和上面一行的值相同
const(
n1 = 100 //100
n2 //100
n3 //100
)
常量的赋值时编译期的行为,所以下面这种行为会导致编译错误。
const num = func()int{
return 100
}
常量中还有一种常用的预定义常量iota
在之前的博客中介绍了,这里不再叙述。