前言
go的变量定义方式和很多语言不同,可以指定类型,也可以自动推断类型 go变量的顺序也有些不同,其他语言:int a
go: var a int
其实go的变量定义顺序更加符合人类阅读习惯
变量定义的几种方式以及要注意的点
1. 指定变量类型:var i int 2. 自动推断类型: s :="abc" 此种定义只能用于局部变量定义 左边必须是以前未定义变量 var s="abc" 这种可以用于全局变量 3. 多个变量定义并且赋予初始值:var s1,s2 string = "a","b" 4. 变量联合定义: var( i1,i2 int=1,2 bool1 bool ) 5. 变量如果定义但是没有赋值 - 数值类型为 0 - 布尔类型为 false - 字符串为 ""(空字符串) - 其它类型为 nil:
全局变量与局部变量区别
- 定义方式有区别
- 局部变量定义了必须要使用 全局变量可以不使用
常量
未使用局部常量,不会像普通局部变量一样报错。
常量定义的方式
const age int=12 可以指定类型 也可以不指定 //const name :="231" 错误 const a,b = 1,2 const( Monday,Tuesday,Wednesday = 1,2,3 Thursday,Friday,Saturday = 4,5,6 )
常量的枚举
iota是golang语言的常量计数器,只能在常量的表达式中使用。
iota在const关键字出现时将被重置为0const ( _ = iota one = iota //不同行值递增 tow three four1,four2,four3 = iota,iota,iota //同一行值一样 five = "five" //单独赋值依旧递增 5 six //会沿用上面的 但是iota会递增 6 seven = iota //7 ) const zero = iota // 重新定义会置0
iota的几个例子
//iota const( a1= 1<<iota //0001 a2 // 0010 a3 //0100 a4 //1000 ) println(a1,a2,a3,a4) const( _ = iota kb = 1<<(iota*10) //1 << (10*1) mb //1 << (10*2) gb //1 << (10*3) tb //1 << (10*4) ) println(kb,mb,gb,tb) println(1<<10) //1 左移10 const( w1,w2=iota+1,iota+2 //0+1 0+2 w3,w4 //1+1 1+2 w5,w6 //2+1 2+3 ) println(w1,w2,w3,w4,w5,w6)