3.类型¶
Go 语言内置数据类型汇总¶
分类 | 类型名 | 位数/说明 | 备注/别名 |
---|---|---|---|
布尔型 | bool |
取值为 true 或 false |
|
整型 | 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 通信 |
对于没有指定类型的科学计数法,如2e10
、3.3e2
、2e2
,go默认其为float64
类型。
String的原始字符串¶
若需要获取原始字符串,即不转义(如python中的r"..."
),可以使用``
包围字符串。
go的原始字符串还允许多行,即可以写成这样:
字符串不可更改¶
和C语言一样,字符串类型可以赋予不同的值,但是字符串本身不可更改。
type 类型别名¶
这个关键词的作用和C语言中的typedef
相似,可以给变量一个新的名称,或者定义一个新的类型。
Warning
go 语言中的type
所给的别名声明的类型,不能与底层类型混用,比如相互赋值等。
类型转化¶
Go的类型转换和Python一样,写成如下形式:
要注意,数值如果要转换成对应的字符,比如65转换成'65'
而不是A
,需要使用strconv.Itoa()
函数,而不是直接String(变量)
,String(变量)
的结果是对应utf-8的编码值的字符。
Go对于转换成String还提供了一种C语言的方式,即Sprintf()
。