Go语言从入门到实战-数据类型
2019-03-16 本文已影响4人
codefine
数据类型
基本数据类型
// 整型
int int8 int16 int32 int64
// 无符号整型
uint uint8 uint16 uint32 uint64 uintptr
// 浮点类型
float32 float64
// 复数
complex64 complex128
// 布尔类型
bool
// 字符
string
// 字节,uint8的别名
byte
// int32
//表示一个Unicode 码点
rune
零值
当一个变量或者新值被创建时, 如果没有为其明确指定初始值,go语言会自动初始化其值为此类型对应的零值, 各类型零值如下:
bool :false
integer :0
float :0.0
string:""
pointer, function, interface, slice, channel, map:nil
对于复合类型, go语言会自动递归地将每一个元素初始化为其类型对应的零值。比如:数组, 结构体 。
整型占用字节问题
int,uint整型:和机器平台有关,最小32位,占用4字节,64位,占用8字节。
类型转换
不支持不同类型之间隐式转换,即便是类型别名和同类型之间也不行。
数值范围
类型 | 长度(字节) | 数值范围 |
---|---|---|
int8 | 1 | -128~127 (-2^(8-1) ~ 2^7-1) |
uint8 | 1 | 0~255 (0 ~ 2^8-1) |
int16 | 2 | -32768~32767 |
uint16 | 2 | 0~65535 |
int32 | 4 | -2^31 ~ 2^31-1 (-2147483648~2147483647) |
uint32 | 4 | 0~2^32-1 (0~4294967295) |
int64 | 8 | -2^63 ~2^63-1 |
uint64 | 8 | 0~2^63 |
int | ||
uint | ||
uintptr |
int占用字节数测试
//
//机器位数
cpu := runtime.GOARCH
//int占用位数
int_size := strconv.IntSize
string类型
string 是值类型。默认初始化值是空字符串,不是nil(string类型零值为空字符串)
func TestString(t *testing.T) {
var s string
t.Logf("%T %q", s, s) //string ""
}
本人Go语言接触时间不长,文章内容难免有纰漏,如有错误还请指正,欢迎交流学习。