整型
类型名称 | 有无符号 | 大小 |
---|---|---|
int8 | 是 | 1字节 |
int16 | 是 | 2字节 |
int32 | 是 | 4字节 |
int64 | 是 | 8字节 |
uint8 | 否 | 1字节 |
uint16 | 否 | 2字节 |
uint32 | 否 | 4字节 |
uint64 | 否 | 8字节 |
int | 是 | 编译的目标平台为32位时占4字节,64位占8字节 |
uint | 否 | 编译的目标平台为32位时占4字节,64位占8字节 |
rune | 是 | 同int32 |
byte | 否 | 同uint8 |
uintptr | 否 | 同uint |
rune表示一个Unicode code point,本质上是int32。
byte强调数值是原始数据而不是一个小的整数,本质上是uint8。
uintptr用于指针运算,本质上是uint。
浮点型
Go提供了两种浮点数类型,float32和float64,分别占用4字节和8字节,它们的算术规范由IEEE754浮点数国际标准定义。
复数型
Go提供了两种复数类型,complex64和complex128,分别占用8字节和16字节,complex函数用于构建复数,real和imag函数分别返回复数的实部和虚部。
布尔型
布尔型的值只可以是 true 或者 false,例如var b bool = true,布尔型占用1字节。
字符串
Go 的字符串使用 UTF-8 编码,内置的len函数可以返回一个字符串中的字节数(不是rune数)。
使用反引号(键盘上1左边)括起来的字符串为原生字符串,原生字符串会原样输出,没有转义操作。
func main() {
var value1 string="hello"
var value2 string=` world \n \b \n \r`
fmt.Println(value1+value2)//hello world \n \b \n \r
}
使用下标遍历的是字符串中的字节,使用for range可以遍历字符串中的rune。
func main() {
s := "你好世界"
for i:=0; i < len(s); i++{
fmt.Printf("%c", s[i])//乱码
}
fmt.Printf("\n")
for _, v := range s {
fmt.Printf("%c", v)//你好世界
}
}
有疑问加站长微信联系(非本文作者)