摘要:Go语言变量
Go语言中的变量定义相对严格,当定义一个局部变量为使用时,会编译报错,在go语言中,无需要多余的代码。但全局变量除外,定义全局变量允许暂不使用。
全局变量
全局变量可以被全局访问
定义全局变量:
// global variable
var x, y int
var (
a int
b bool
)
基本常量
常量一经被定义后无法被重新赋值,常量可以定义为全局的,也可以定义为局部的。
定义常量:
// 这是一个常量
const CONST1 = 111
iota常量
iota,特殊常量,可以认为是一个可以被编译器修改的常量。 iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
const (
a = iota
b = iota
c = iota
)
// 以上写法可以简写为
const (
d = iota
e
f
)
fmt.Println(a, b, c)
fmt.Println(d, e, f)
// 输出结果:
// 0 1 2
// 0 1 2
iota常量可以恢复计数
// iota可以恢复计数
const (
aa = iota
bb
cc
dd = "lalala"
ee = 2
ff = true
gg = iota // 恢复计数
hh
)
fmt.Println(aa, bb, cc, dd, ee, ff, gg, hh)
// 输出结果为:
// 0 1 2 lalala 2 true 6 7
关于iota一个有趣的例子
// iota 移位运算
const (
ii = 1 << iota
jj = 2 << iota
kk = 3 << iota
ll // 此处等价于 ll = 3 << iota
mm // 此处等价于 ll = 3 << iota
)
fmt.Println(ii, jj, kk, ll, mm)
// 输出结果为:
// 1 4 12 24 48
变量
定义变量:
// 定义一个变量并对其赋值
var intVal int
intVal = 1
// 定义一个变量对其赋值,与上文中的效果一样
intVal1 := 1
go语言中,int类型比较特殊,可以有多种类型的int。
// int 数据类型 包含了以下所有数据类型
var var1 int = -9223372036854775808
// 无符号 8 位整型 (0 到 255)
var var2 uint8 = 255
// 无符号 16 位整型 (0 到 65535)
var var3 uint16 = 65535
// 无符号 32 位整型 (0 到 4294967295)
var var4 uint32 = 4294967295
// 无符号 64 位整型 (0 到 18446744073709551615)
var var5 uint64 = 18446744073709551615
// 有符号 8 位整型 (-128 到 127)
var var6 int8 = 127
// 有符号 16 位整型 (-32768 到 32767)
var var7 int16 = 32767
// 有符号 32 位整型 (-2147483648 到 2147483647)
var var8 int32 = 2147483647
// 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
var var9 int64 = 9223372036854775807
fmt.Println(var1, var2, var3, var4, var5, var6, var7, var8, var9)
go类型强转
// go 类型转换
var sum int = 16
var sumf float32
sumf = float32(sum / 2)
fmt.Printf("%f\n", sumf)