Go语言中的变量和常量
变量
变量的声明
变量的功能就是存储数据,不同的变量保存的数据类型可能会不一样
Go语言中的变量需要声明后才能使用!,而且声明后必须使用!
-
标准声明格式
-
var 变量名 变量类型
-
//标准声明 var name string var age int var isOk bool
-
-
批量声明格式
-
var (
变量名 变量类型
变量名 变量类型
变量名 变量类型
)
-
//批量声明 var ( a string b int c bool d float32 )
-
变量的初始化
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值
- 整型和浮点型变量的默认值为0
- 字符串变量的默认值为空字符串
- 布尔型变量默认为false
- 切片,函数,指针变量的默认为nil
当然也可以在声明变量的时候为其指定初始值,格式为
-
var 变量名 类型 = 表达式
-
//声明变量同时指定初始值 var name1 string = "wangxu" var age1 int = 18 var name2,age2 = "王旭",22
-
Go语言支持类型推导,就是可以根据你所赋予的值去推到这个变量的类型,可以不用去声明类型
-
var 变量名 = 表达式
-
//类型推导 var name3 = "xiao" var age3 = 23
-
Go语言还支持短变量声明,但是必须在函数内部使用
-
变量名 := 表达式
-
func main() { //短变量声明(必须在函数内部使用) age4 := 10 name4 := "hahaha" }
-
Go语言还支持匿名变量,就是在使用多重赋值时,如果想忽略某个值,可以使用匿名变量,匿名变量用一个下划线
_
表示
-
变量1,_ := 函数
—>这样就会忽略foo()函数中的第二个值-
func foo() (int, string) { return 10,"wangxu" } func main() { //匿名变量 x,_ := foo() _,y := foo() fmt.Println("x=",x) fmt.Println("y=",y) }
-
常量
相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值,常量的声明和变量的声明很类似,只是把
var
换成了const
,常量在定义的时候必须赋值
-
const 常量名 = 表达式
-
func main() { //单个常量声明 const pi1 = 3.1415 const e1 = 2.7182 //多个常量一起声明 const ( pi2 = 3.1415 e2 = 2.7182 ) //const同时声明多个常量时,如果省略了值则表示和上面一行的值相同 const ( n1 = 100 n2 n3 ) }
-
iota
iota
是Go语言的常量计数器,只能在常量的表达式中使用
iota
在const
关键字出现时将被重置为0,const
中每新增一行常量声明将使iota
计数一次(iota
可理解为const
语句块的行索引)
-
const 常量名 = iota
-
//iota的使用 const ( a1 = iota //0 a2 //1 a3 //2 a4 //3 ) fmt.Println(a4)
-
几个常见的
iota
操作
-
使用
-
跳过某些值-
//使用 _ 跳过某些值 const ( n1 = iota n2 _ n4 ) fmt.Println(n4)
-
-
iota
声明中间插队-
//iota声明中间插队 const( a1 = iota a2 = 100 a3 = iota a4 ) const a5 = iota fmt.Println(a1,a2,a3,a4,a5)//0 100 2 3 0
-
-
定义数量级
-
//定义数量级 const ( _ = iota KB = 1 << (10*iota) MB = 1 << (10*iota) GB = 1 << (10*iota) TB = 1 << (10*iota) PB = 1 << (10*iota) ) fmt.Println(KB,MB,GB,TB,PB)//1024 1048576 1073741824 1099511627776 1125899906842624
-
-
多个
iota
定义在一行-
//多个iota定义在一行 const ( a,b = iota+1,iota+2 c,d e,f ) fmt.Println(a,b,c,d,e,f)//1 2 2 3 3 4
-