三、数据类型和操作

一、数据类型

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语言中没有其他语言中的三元运算符 ?:

你可能感兴趣的:(三、数据类型和操作)