一、数据类型
Go支持的数据类型特别丰富,你可以在Go SDK/src/builtin/builtin.go 这个文件中查看默认的类型,这里简单说一下常用的类型,详细的信息可以到上述文件中查看。
- 1、数字类型
//整型
uint8 // 0 ~ 2^8-1
int8 // -2^7 ~ 2^7-1
uint16 // 0 ~ 2^16-1
int16 //-2^15 ~ 2^15-1
uint32 // 0 ~ 2^32-1
int32 //-2^31 ~ 2^31-1
uint64 // 0 ~ 2^64-1
int64 //-2^63 ~ 2^63-1
//浮点型
float32 // 32 bit
float64 // 64 bit
//复数
complex64 //实部和虚部都是 float32
complex128 //实部和虚部都是 float64
//别名
byte = uint8
int = int32
uint = uint32
rune = int32
注意
int64、float32、float64 相当于java中的 long、float、double。但是,Java中如果两个数+ 和 -操作的结果为两个操作数中精度比较高的类型,也就是存在自动转型,计算之前,会把精度比较低的那个提升成相同的类型,然后再做计算。但是go里面没有自动转型。举个栗子:
var a int32 = 10
var b int64 = 20
fmt.Println(a+b) //error: a+b (mismatched types int32 and int64)
所以,需要我们手动进行类型转换,这样其实对于我们来说操控性更好,如何转换是由我们控制的。下面讲一下转换方式,其实只需要调用对应类型的方法就可以了,比如:
int32()
uint64()
int64()
对于上个栗子,我们可以这样转换:
var a int32 = 10
var b int64 = 20
fmt.Println(int64(a)+b) // 30
至于是向高精度转还是低精度转,那就根据具体情况转就可以了,不过需要注意的是,高进度向低精度转的时候,存在精度丢失的情况。
- 2、字符串类型
字符串类型为 string,是不可变类型。就是字符串的内容不可更改,一旦更改了,变量就指向更改后的字符串了。 - 3、bool类型
bool只有两种,true 和 false
二、操作
- 1、运算符
和其他语言一样,go的运算符有
//数值类型
+ - * / ^ % & | << >>
分别为加 减 乘 除 异或(一个操作数的时候是按位取反) 取余 按位与 按位或 左移 右移
2^4 = 6
^1 = -2
//bool类型
& && | ||
分别为 与 短路与 或 短路或
- 2、+
和其他语言一样,go中的+也是一个重载运算符,两个操作数都是数字的话,就是普通的加法运算。如果有一个是字符串类型,那么+就是字符串的拼接。
1 + 2 = 3
"cai " + 9 = "cai 9"
注意
go语言中没有其他语言中的三元运算符 ?:
网友评论