Number
整数
Go语言中有uint8
, uint16
, uint32
, uint64
, int8
, int16
, int32
和int64
,其中u
开头的是无符号类型,后面的数字代表位数。
Go还定义了三个依赖系统
的类型,uint
,int
和uintptr
。因为在32位系统和64位系统上用来表示这些类型的位数是不一样的。 对于32位系统 uint=uint32
,int=int32
,uintptr为32位的指针
对于64位系统uint=uint64
,int=int64
,uintptr为64位的指针
浮点数
Go的浮点数类型有两种,float32
和float64
。float32又叫单精度浮点型
,float64又叫做双精度浮点型
。其最主要的区别就是小数点后面能跟的小数位数不同
。
虚数
另外Go还有两个其他语言所没有的类型,虚数类型
。complex64
和complex128
,后面的数字代表位数,其中实数部分和虚数部分各占一半位数。
数值操作
对于数值类型,其所共有的操作为加法(+)
,减法(-)
,乘法(*)
和除法(/)
。另外对于整数类型
,还定义了求余运算(%)
。
String
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节
连接起来的。(对于汉字,通常由多个字节组成)。这就是说,传统的字符串是由字符组成的,而Go的字符串不同
,是由字节组成的。这一点需要注意。
字符串的表示很简单。用(双引号"")或者(``号)来描述。
package main
import "fmt"
func main() {
var a string = "123\n321"
var b string = `123\n321`
fmt.Printf("%s\n", a)
fmt.Printf("%s", b)
}
//输出为
/*
123
321
123\n321
*/
运行下面的代码
package main
func main() {
var a string = "123\n321"
var b string = `123\n321`
fmt.Println(len(a)," ",len(b))
}
//输出是7,8
可以得到结论,a在内存中是'1' '2' '3' '\n' '3' '2' '1'
,b是'1' '2' '3' '\' 'n' '3' '2' '1'
不可变
Go 中的字符串和 Java 中的一样,是不可变类型,也就是类似const char*
package main
import "fmt"
func main() {
var a string = "123\n321"
//a[3] = '1'
}
布尔型
布尔型是表示真值
和假值
的类型。可选值为true
和false
。所能进行的操作如下:&& and 与|| or 或! not 非
取值
Go的布尔型取值就是true
或false
。任何空值(nil)或者零值(0, 0.0, "")都不能作为布尔型来直接判断
。
也就是说不能
if 0{
}
if nil {
}
if "" {
}