美文网首页
三、数据类型和操作

三、数据类型和操作

作者: UUID | 来源:发表于2018-03-29 11:13 被阅读8次

    一、数据类型

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

    相关文章

      网友评论

          本文标题:三、数据类型和操作

          本文链接:https://www.haomeiwen.com/subject/iopnfftx.html