golang数据类型
Go 语言中的数据类型,也是多姿多态,不过一般分为两大类,基本类型和引用类型,基本数据类型有int,float,bool,string,以及数组和struct,特点是变量直接存储值,内存通常在栈中分配,栈在函数调用完会被释放,引用类型有,指针,slice,map,chan等都是引用类型,特点是变量存储的是一个地址,这个地址存储最终的值。内存通常在堆上分配,通过GC回收。
基本类型
整型
整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64
对应占用的内存大小
int8: 8位 1字节
int16: 16位 2个字节
int32: 32位 4个字节
int64: 64位 8个字节
可以使用math包来获取取值范围。
package main import ( "fmt" "math" ) func main() { fmt.Println("int8: ", math.MinInt8, math.MaxInt8) fmt.Println("int16: ", math.MinInt16, math.MaxInt16) fmt.Println("int32: ", math.MinInt32, math.MaxInt32) fmt.Println("int64: ", math.MinInt64, math.MaxInt64) }
浮点型
Go语言提供两种用来存储小数的数据类似即浮点型,浮点型又分为float32、float64。区别在于表达数字的长度和精度一样。
对应占用内存的大小
float32: 32位 4个字节
float64: 64位 8 个字节
获取取值范围
package main import ( "fmt" "math" ) func main() { fmt.Println("Float32: ", math.MaxFloat32) fmt.Println("Float32: ", math.MaxFloat64) }
布尔值
Go语言中的bool类型也是比较有特色的,只包含True和False两个值。布尔类型在内存中只占用一位
注意:
- 布尔类型变量的默认值为
false
。 - Go 语言中不允许将整型强制转换为布尔型.
- 布尔型无法参与数值运算,也无法与其他类型进行转换。
字符串
Go语言中的字符串以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、float32、float64 等)一样。 Go 语言里的字符串的内部实现使用UTF-8
编码。 字符串的值为双引号(")
中的内容,可以在Go语言的源码中直接添加非ASCII码字符,字符串在内存中占用16位也就是2个字节
byte和rune类型
组成每个字符串的元素叫做“字符”,可以通过遍历或者单个获取字符串元素获得字符。 字符用单引号(’)包裹起来,如:
Go 语言的字符有以下两种:
uint8
类型,或者叫 byte 型,代表了ASCII码
的一个字符。rune
类型,代表一个UTF-8字符
。