Go基础数据类型

Go将数据类型分为四类: 基础类型、复合类型、引用类型和接口类型。 基础类型包括:数字、字符串、布尔型。 整型 整型分为有符号和无符号类型的整数。

int8        int16       int32       int64   //分别对应8、16、32、64位大小的有符号整型数

uint8       uint16      uint32      uint64  //分别对应8、16、32、64位大小的无符号整型数

这些类型的变量不允许互相赋值或操作。如以下代码会产生错误:

1
2
3
var 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
2
3
i := 1
在函数中,简洁赋值语句 := 可在类型明确的地方代替 var 声明。
函数外的每个语句都必须以关键字开始(var, func 等等),因此 := 结构不能在函数外使用。

Ref: 1.The Go Programming Language