整型
类型 |
说明 |
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)
}