GO 的数据类型分为四大类:基础类型(basic type),聚合类型(aggregate type),引用类型(reference type),接口类型(interface type)。
下面讲的是基础类型:number,string, bool。其它的会在后面的博客涉及到
1.1 整数
有符号整数:
int8
int16
int32
int64
无符号整数
uint8
uint16
uint32
uint64
此外还有两种类型 int,uint。在特定平台上,其大小与原生的有符号整数/无符号整数相同;这两种类型大小相同,都是32或者64位,具体看编译器。
最后还有一种无符号整数 uintptr ,其大小并不明确,但是足以完整存放指针。uintptr 类型仅仅用于底层编程。例如Go程序和C程序库或者操作系统接口界面。
1.2 浮点数
float32
float64
1.3 复数
complex64 由float32组成
complex128 由float64组成
内置的complex函数根据给定的实部和虚部创建复数
而内置的real函数和imag函数则分别提取复数的实部和虚部
var x complex128 = complex(1,2) //1+2i
var y complex128 = complex(3,4) //3+4i
fmt.Println(x*y) // "(-5 + 10i)"
fmt.Println(real(x*y)) //"-1"
fmt.Println(imag(x*y)) //"10"
也可以直接写出复数
x := 1 + 2i
1.4 布尔值
bool 类型的值只有两种:true,false。
布尔值无法隐式的转换成数值(0或1),反之也不行。
1.5 字符串
字符串是不可变的字节序列,它可以包含任意数据,包括0值字节,但是主要还是为了人可读的文本。
内置的 len()函数返回字符串的字节数。下标访问操作 s[i] 则读取得到字符。 其中 0 <= i <= len(s).
s := "hello"
fmt.Println(len(s)) // 12
fmt.Println(s[0],s[7]) // 104 119 ('h' 'w')
如果越界访问,就会发生宕机异常。
//左闭右开
fmt.Println(a[:5]) //"hello"
fmt.Println(a[7:])
加号(+) 运算符连接两个字符串而生成一个新字符串:
s := "hello"
t := s
s += ",world"
fmt.Println(s) //hello, world
fmt.Println(t) // hello
因为字符串不可改变,所以字符串内部的数据不可修改
s[0] = ‘l’ //编译错误:s[0] 无法赋值