前言
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)


京公网安备 11010502036488号