Go将数据类型分为四类: 基础类型、复合类型、引用类型和接口类型。 基础类型包括:数字、字符串、布尔型。 整型 整型分为有符号和无符号类型的整数。
int8 int16 int32 int64 //分别对应8、16、32、64位大小的有符号整型数
uint8 uint16 uint32 uint64 //分别对应8、16、32、64位大小的无符号整型数
这些类型的变量不允许互相赋值或操作。如以下代码会产生错误:1
2
3var a int8
var b int32
c := a+b
Unicode字符rune类型是和int32等价的类型,通常用于表示一个Unicode码点。这两个名称可 以互换使用。同样byte也是uint8类型的等价类型,byte类型一般用于强调数值是一个原始的数 据而不是一个小的整数。
// Go中运算符优先级
* / % << >> & &^
+ - | ^
== != < <= > >=
&&
||
浮点数
float32 float64
复数
complex64 //对应float32
complex128 //对应float64
布尔型
true false
字符串 原生字符串使用反引号代替双引号。在原生字符串面值中,不会进行转义操作。
const t = `Go is best language`
一个字符串是包含的只读字节数组,一旦创建,是不可变的。相比之下,一个字节slice的元 素则可以自由地修改。
// 字符串和字节slice之间可以相互转换
s := "abc"
b := []byte(s)
s2 := string(b)
strconv包提供了布尔型、整型数、浮点数和对应字符串的相互转换,还提供了双引号转义相关的转换。
常量 常量表达式的值在编译期计算,而不是在运行期。 所有常量的运算都可以在编译期完成,这样可以减少运行时的工作,也方便其他编译优化。 当操作数是常量时,一些运行时的错误也可以在编译时被发现,例如整数除零、字符串索引 越界、任何导致无效浮点数的操作等 注意默认类型是规则的:无类型的整数常量默认转换为int,对应不确定的内存大小,但是浮 点数和复数常量则默认转换为float64和complex128。
const (
a = 1
b
c = 2
d
)
fmt.Println(a, b, c, d) //1, 1, 2, 2
const (
a uint = 1 << iota
b
c
d
)
fmt.Println(a, b, c, d) //1, 2, 4, 8
1 | i := 1 |
Ref: 1.The Go Programming Language