Go语言学习 十四 基本数据类型
类型确定一组值以及特定于这些值的操作和方法。类型可以由类型名称表示(如果有的话),或者使用类型字面量指定,则类型名称由现有类型组成。
可以使用类型字面量构造复合类型-数组
,结构
,指针
,函数
,接口
,切片
,映射
和信道
类型。
每个类型T
都有一个基础类型:如果T
是预先声明的布尔,数字或字符串类型之一,或者是类型字面量,则相应的基础类型是T
本身。否则,T
的底层类型是T
在其类型声明中引用的类型的基础类型。
一 布尔类型
布尔类型是由预先声明的常量true
和false
表示的布尔真值集。预声明的布尔类型是bool
;它是一个已定义的类型。
var x bool // fasle
y := true // y类型为布尔
二 数字类型
数字类型表示整数或浮点数的集合。预声明的与架构无关的数字类型是:
uint8 所有无符号8-bit整数(0 - 255)
uint16 所有无符号16-bit整数(0 - 65535)
uint32 所有无符号32-bit整数(0 - 4294967295)
uint64 所有无符号64-bit整数(0 - 18446744073709551615)
int8 所有有符号8-bit整数(-128 - 127)
int16 所有有符号16-bit整数(-32768 - 32767)
int32 所有有符号32-bit整数(-2147483648 - 2147483647)
int64 所有有符号64-bit整数(-9223372036854775808 - 9223372036854775807)
float32 所有IEEE-754 32-bit浮点数
float64 所有IEEE-754 64-bit浮点数
complex64 所有复数集合,包含 float32 实部和虚部
complex128 所有复数集合,包含 float64 实部和虚部
byte uint8的别名
rune int32的别名
int8,int16,int32,int64 分别对应于Java中的byte,short,int,long
还有一组具有特定于实现的大小的预声明的数字类型:
uint 32 或 64 位
int 32 或 64 位
uintptr 无符号整数,足以存储指针值的未解释位
为了避免可移植性问题,所有数字类型都是已定义的类型,除了byte
(uint8
的别名)和rune
(int32
的别名)。在表达式或赋值中混合使用不同的数字类型时,需要显式转换。例如,int32
和int
是不同的类型,即使它们在特定系统架构上可能具有相同的大小。
var x uint32 // 0
y := 6 // int
var z int // 0
var m int16 // 0
var n = 3.141 // float64
三 字符串类型
字符串类型表示字符串值的集合。字符串值(可能为空)是字节序列,字节数称为字符串的长度,并且不为负。字符串是不可变的:一旦创建,就不能修改其内容,预声明的字符串类型为string
。如果字符串是常量,则长度是编译时常量。字符串的字节可以使用整数索引0~len(s)-1
来访问,但这种索引元素不可以通过地址访问:如果s[i]
是字符串的第i
个字节,则&s[i]
无效。
var str = "hello, world."
s := `another string.`
无类型常量的默认类型分别是bool,rune,int,float64,complex128或string,具体取决于它是布尔值,符文,整数,浮点数,复数还是字符串常量。
版权声明:知识共享署名-非商用-非衍生 (CC BY-NC-ND 3.0) 转载请注明出处