go基本数据类型 整型 位运算 浮点型 字符串 派生类型 算术类型极值

go基本数据类型
整型
位运算
浮点型
字符串
派生类型
算术类型极值

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