基本类型
本节介绍下Golang中的基本数据类型,Golang中的基本数据类型包含如下几种:
布尔类型
bool
数值类型
int8, int16, int32, int64, int
uint8, uint16, uint32, uint64, uint
float32, float64
complex64, complex128
byte
rune
字符串类型
string
布尔类型
Golang中布尔类型用bool
表示,值为true
或false
。
这段程序中bool
类型的变量a
赋值为true
,变量b
赋值为false
。
c
赋值为a && b
,&&
运算符表示与操作,当a
,b
均为true
时才返回true
。
||
运算符表示或操作,当a
,b
其中之一为true
即返回true
。
前面程序的输出为:
有符号整型
所谓有符号是指表示的值可正可负。
int8 用8个比特表示的有符号整数类型 内存占用 8比特 表示范围 -128 ~ 127
int16 用16比特表示的有符号整数类型 内存占用 16比特 表示范围 -32768 ~ 32767
int32 用32比特表示的有符号整数类型 内存占用 32比特 表示范围 -2147483648 ~ 2147483647
int64 用64比特表示的有符号整数类型 内存占用 64比特 表示范围 -9223372036854775808 ~ 9223372036854775807
int 用32或64比特表示的有符号整数类型,具体是32位还是64位取决于操作系统 内存占用 同int32或int64 表示范围 同int32或int64
前面这段程序中变量a
显示声明为int
类型,变量b
通过我们赋予的初始值(95)自动推断,Golang中整型值的默认类型是int
,这点下面的程序也有体现。
我们可以通过fmt.Printf
方法的%T
格式化参数来打印出变量的类型。还可以通过unsafe.Sizeof
获取变量占用的字节数(字节即byte,一个字节等于8个比特)。注意慎用unsafe
包,有可能有兼容性问题,这点根据包名称其实也能看出来。
下面的这段程序输出变量a
、b
的类型和占用的字节数。
可以看出,变量a
、b
均为int
类型,并且占用了4个字节。但是如果是在64比特的系统上运行,将看到占用8个字节(64比特)。
无符号整型
uint8 用8个比特表示的无符号整数类型 内存占用 8比特 表示范围 0 ~ 255
uint16 用16个比特表示的无符号整数类型 内存占用 16比特 表示范围 0 ~ 65535
uint32 用32个比特表示的无符号整数类型 内存占用 32比特 表示范围 0 ~ 4294967295
uint64 用64个比特表示的无符号整数类型 内存占用 64比特 表示范围 0 ~ 18446744073709551615
uint 用32或64比特表示的无符号整数类型,具体是32位还是64位取决于操作系统 内存占用 同uint32或uint64 表示范围 同uint32或uint64
浮点类型
float32 用32比特表示的浮点数类型 float64 用64比特表示的浮点数类型 Golang浮现值的默认类型是float64
。下面的程序中变量a
、b
通过赋的初值自动推断数据类型,可以看出其数据类型确实为float64
。
复数类型
complex64 实部和虚部均为float32
的复数类型 complex128 实部和虚部均为float64
的复数类型
该函数接收浮点类型的实部r
和虚部i
两个参数,并返回复数类型。注意两个参数浮点类型必须严格一致,要么都是float32
,要么都是float64
。如果入参均为float32
则返回值为complex64
;如果入参均为float64
,则返回值为complex128
。
Golang为我们提供了复数简写语法糖,可以更加直观简洁的创建复数:
其他数值类型
byte uint8类型的别名 rune int32类型的别名
这两个数值类型我们后面章节详细讨论字符串时再介绍。
字符串类型
Golang中字符串可以看作字节(byte)集合,这样说可能不太容易理解,后面章节我们详细讨论字符串时再介绍。现在我们可以把字符串类型看作是字符集合。
强制类型转换
Golang是强类型的编程语言,并且不支持类型自动转换。
我们可以通过强制类型转换将变量j
转换为与变量i
相同的int
类型再进行相加,强制类型转换的语法为T(v)
。
不仅仅是变量进行运算时,赋值时也要求变量必须匹配,如果不匹配需要强制类型转换:
前面程序中i
首先进行了强制类型转换然后才赋值为了不通类型的变量j
,执行结果如下:
Last updated
Was this helpful?