Go的四种数据类型:基础类型、复合类型、引用类型、接口类型。
3.1 整型
有符号:int8, int16, int32, int64
无符号:uint8, uint16, uint32, uint64
特定CPU平台机器字节大小:int, uint
Unicode字符类型rune,和int32等价
3.2 浮点数
Go提供了两种精度的浮点数:float32, float64
3.3 复数
Go中两种复数类型:complex64, complex128
用complex函数构建:
var x complex128 = complex(1, 2) // 1+2i
var y complex128 = complex(3, 4) // 3+4i
3.4 布尔型
布尔值并不会隐式转换为数字值0或1,反之亦然。
3.5 字符串
string是一个不可改变的字节序列。
len函数返回字节数(不是rune字符数)。s[i]返回第i个字节。
字符串可以用==和<进行比较,比较通过逐个字节比较完成的。
字符串是不可修改的,因此尝试修改字符串内部数据的操作也是被禁止的:
s[0] = 'L' // compile error: cannot assign to s[0]
3.6 常量
每种常量的潜在类型都是基础类型:bool、string或数字。
可以批量申明多个常量:
const (
e = 2.71828182845904523536028747135266249775724709369995957496696763
pi = 3.14159265358979323846264338327950288419716939937510582097494459
)
常量声明可以使用iota常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。
type Weekday int
const
(
Sunday Weekday = iota //第一个声明的常量所在的行,iota将会被置为0
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
编译器为没有明确的基础类型的数字常量提供比基础类型更高精度的算术运算,有六种未明确类型的常量类型,分别是无类型的布尔型、无类型的整数、无类型的字符、无类型的浮点数、无类型的复数、无类型的字符串。