Go基本类型
类型 | 长度 | 取值范围 | 注意事项 | 零值(即默认值) |
---|---|---|---|---|
布尔型bool | 1字节 | true/false | 不能使用数字代替 | false |
整型int/uint | 根据运行平台可能为32位或64位 | 0 | ||
8位整型int8/uint8 | 1字节 | -128-127/0-255 | 0 | |
字节型byte(uint8别名) | 用法等同于无符号的8位整型 | 0 | ||
16位整型int16/uint16 | 2字节 | -32768-32767/0-65535 | 0 | |
32位整型int32(rune别名)/uint32 | 4字节 | rune常用于Unicode,用法等同于有符号的32位整型 | 0 | |
64位整型int64/uint64 | 8字节 | 0 | ||
浮点型float32/float64 | 4/8字节 | 小数位精确到7/15位小数位 | 0 | |
复数complex64/complex128 | 8/16字节 | 0 | ||
足够保存指针的32位或64位整数型uintptr | 0 |
范例:验证基本类型零值和最大最小值
package main
import (
"fmt"
"math"
)
func main() {
var a int
fmt.Println(a) // 0
var b float32
fmt.Println(b) // 0
var c bool
fmt.Println(c) // false
var d byte
fmt.Println(d) //0
// go中的math包可以取得基本类型的最大值和最小值
fmt.Println(math.MaxFloat32)
}
变量
单个变量的声明与赋值
声明格式:var 变量名 变量类型
赋值格式:变量名 = 表达式
声明的同时赋值:var 变量名 变量类型 = 表达式
package main
import (
"fmt"
)
func main() {
// 先声明后赋值多用于全局变量声明
var a int // 声明变量
a = 11 // 变量赋值
fmt.Println(a)
// 声明的同时并赋值
var b int = 12
fmt.Println(b)
// 声明时省略类型,由系统推断
var c = false
fmt.Println(c)
// 简短声明,仅用于局部变量
d := 18.9
fmt.Println(d)
}
多个变量的声明与赋值
- 全局变量声明可使用
var()
的方式简写 - 全局变量的声明不能省略
var
,但可以使用并行方式 - 所有变量都能省略类型,由系统推断
- 局部变量不能使用
var()
的方式简写,只能使用并行方式
package main
import (
"fmt"
)
var (
// 常规方式
aa = 123
// 并行声明
bb, cc = 56, false
)
func main() {
// 多个变量声明
var a, b int
// 多个变量赋值
a, b = 11, 13
fmt.Println(a + b)
// 多个变量声明的同时赋值
var c, d int = 6, 7
fmt.Println(c + d)
// 多个变量声明时省略类型
var e, f = 8, 1
fmt.Println(e + f)
// 多个变量简短声明
g, h := 11, 15
fmt.Println(g + h)
}
变量的类型转换
- Go中不存在隐式转换(即自动转换),所有类型转换必须显式声明(即强制转换)
- 转换只能发生在两种互相兼容的类型之间
- 类型转换格式:
valueA [:]= TypeofValueA (valueB)
package main
import (
"fmt"
)
func main() {
// 整数型与浮点型兼容,可以进行类型转换
var a float32 = 100.1
fmt.Println(a) // 100.1
b := int(a)
fmt.Println(b) // 100
}