Go语言圣经 .2.基础数据类型

Go语言将数据类型分为四类:

  • 基础类型
    • 数字
    • 字符
    • 布尔型
  • 复合类型
    • 数组
    • 结构体
  • 引用类型
    • 指针
    • 切片
    • 字典
    • 函数
    • 通道
    • 接口类型

基础数据类型

整型

\(2^n-1\)

浮点数

复数

布尔型

字符串

常量

常量表达式的值在编译期计算,而不是在运行期

因为它们的值是在编译期就确定的,因此常量可以是构成类型的一部分

例如指定数组类型的长度

const IPv4Len = 4 

// parseIPv4 parses an IPv4 address (d.d.d.d).
func parseIPv4(s string) IP {
var p [IPv4Len]byte
// ...
}

每种常量的潜在类型都是基础类型: boolean, string 或数字

可以批量声明, 除了第一个外,其他的声明都可以省略.

const ( 
a = 1
b
c = 2
d
)
fmt.Println(a, b, c, d) // "1 1 2 2"

iota 常量生成器

在一个const声明语句中,在第一个声明的常量所在的行, iota将会被置为0

type Weekday int 
const (
Sunday Weekday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
// 这里Subday=0,Monday=1, 以此类推
const ( 
_ = 1 << (10 * iota)
KiB // 1024
MiB // 1048576
GiB // 1073741824
TiB // 1099511627776 (exceeds 1 << 32)
PiB // 1125899906842624
EiB // 1152921504606846976
ZiB // 1180591620717411303424 (exceeds 1 << 64)
YiB // 1208925819614629174706176
)

无类型常量

Go语言中的常量许多没有一个明确的基础类型,编译器为这些没有明确基础类型的数字常量提供了比基础类型更高精度的算数运算。

这里有6中未明确类型的常量类型:

  • 无类型的布尔型
  • 无类型的整数型
  • 无类型的字符
  • 无类型的浮点数
  • 无类型的复数
  • 无类型的字符串