整型
| 类型 |
说明 |
| int8,int16,int32,int64 |
定长有符号整型 |
| uint8,uint16,uint32,uint64 |
定长无符号整型 |
| int |
32位或64位有符号整型,在当前平台最高效的整型 |
| uint |
32位或64位无符号整型,在当前平台最高效的整型 |
| rune |
int32的同义词,用于更清晰地表示一个unicode码 |
| byte |
uint8的同义词,可以用于表示一个字符 |
| uintptr |
足够容纳指针的值的整型,用于底层编程 |
- 算术右移:在go中,
>>右移操作符表示算术右移,也就是对于有符号整型,右移会填充符号位。
- 数组下标用int表示:在go中,系统函数
len的返回值类型是int。
- int:一般来说,int在32位系统中是4字节,在64位系统中是8字节,可以通过
strconv.IntSize来获取int类型的位数。
位运算
^:当^作为二元运算符时表示异或操作,当作为一元运算符时表示取反操作。
&^:对于z=x &^ y表示,若y中的位为1,那么x中的位被清0,若y中的位为0,那么x中的位不变,相当于z=x & (^y)。
>>:对于无符号型是逻辑右移,对于有符号型是算术右移(填充符号位)。
浮点型
| 类型 |
说明 |
| float32 |
32位浮点型 |
| float64 |
64位浮点型 |
字符串
在go中,字符串类型string是不可修改的字节序列,默认表示utf-8编码的字符串。
在官方示例中,string类型的值作为参数或者返回值都是直接按值传递,实际上string类型中记录了底层字符数组的地址和长度,所以按值传递即可,相当于C++中的const char*:
package main
import (
"fmt"
)
func printString(str string) {
fmt.Println(str)
}
func main() {
str := "hello"
printString(str)
}
派生类型
| 类型 |
说明 |
| Pointer |
指针类型 |
| array |
数组类型 |
| struct |
结构化类型 |
| Channel |
通道类型 |
| type FuncT func(args)(returns) |
函数类型 |
| slice |
切片类型 |
| interface |
接口类型 |
| Map |
哈希表类型 |
算术类型极值
在C++中,各种算术类型的极值通过std::numeric_limits<T>获取,在go中则是在math包中:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.MaxInt8)
fmt.Println(math.MinInt8)
}