跳转至

3.类型

Go 语言内置数据类型汇总

分类 类型名 位数/说明 备注/别名
布尔型 bool 取值为 truefalse
整型 int / uint 平台相关(32 或 64 位) 有/无符号
int8 / uint8 8 位 uint8 = byte
int16 / uint16 16 位
int32 / uint32 32 位 int32 = rune
int64 / uint64 64 位
uintptr 表示指针的整型 不常用
浮点型 float32 单精度
float64 双精度(默认使用)
复数型 complex64 实部/虚部为 float32
complex128 实部/虚部为 float64
字符串 string UTF-8 编码文本,不可变
别名 byte uint8 字节
rune int32 Unicode 字符
复合类型 array 定长数组
slice 动态切片
map 键值对字典
struct 自定义结构体
pointer 指针类型
function 函数类型
interface 接口类型
channel 并发通信通道 goroutine 通信

对于没有指定类型的科学计数法,如2e103.3e22e2,go默认其为float64类型。

String的原始字符串

若需要获取原始字符串,即不转义(如python中的r"..."),可以使用``包围字符串。

go的原始字符串还允许多行,即可以写成这样:

a := ` line1
write somethings here...
line3`

字符串不可更改

和C语言一样,字符串类型可以赋予不同的值,但是字符串本身不可更改。

type 类型别名

这个关键词的作用和C语言中的typedef相似,可以给变量一个新的名称,或者定义一个新的类型。

Warning

go 语言中的type所给的别名声明的类型,不能与底层类型混用,比如相互赋值等。

type 类型名称 底层类型

类型转化

Go的类型转换和Python一样,写成如下形式:

<type>(变量)

要注意,数值如果要转换成对应的字符,比如65转换成'65'而不是A,需要使用strconv.Itoa()函数,而不是直接String(变量)String(变量)的结果是对应utf-8的编码值的字符。

Go对于转换成String还提供了一种C语言的方式,即Sprintf()