美文网首页
go 第二篇(变量声明、数据类型)

go 第二篇(变量声明、数据类型)

作者: 原来哥哥是万家灯火 | 来源:发表于2022-05-23 22:18 被阅读0次

    1、变量声明
    go是一种静态语言,意味着变量的类型固定,这个类型需要在声明的时候指明。
    声明变量有两个关键词var const,const是声明一个常量。
    var x int 声明x,其类型是int
    var x int = 9 声明x,其类型是int,并初始化值为9
    如果声明并初始化,因为初始化值有类型,所以变量类型可以省略。
    var x = 9
    如果变量未初始化,则其值是零值。每种类型的变量都有自己的零值。
    可以一次声明并初始化多个变量

    var (
      name = "张三",
      age = 18,
      isAdult = true
    )
    

    const和var一样,只是const声明的是常量

    除了用const和var,还可以用短变量声明操作符:=,声明并初始化变量x := 9
    这种方式只能声明一个局部变量,只能在函数里这样做

    func main() {
        x := 9
    }
    

    golang里没有变量提升,使用一个变量前必须先声明。

    go匿名变量,go里面的函数,是可以返回多个值的,有时候不需要一些值,可以用一个匿名变量接收。

    func queryUserName() (string, err) {
      return "zs",  errors.New("err")
    }
    
    name, _ := queryUserName() // 不关心err,所以用匿名变量忽略它
    

    变量作用域,有全局变量,局部变量。一个变量声明了,就必须要使用,不然是会报错的。短变量无法改写一个全部变量。

    var age = 99
    
    func main() {
        f()
        fmt.Println("🍌", age)
    }
    
    func f()  {
        age := 88
        fmt.Println("🍎", age)
    }
    

    2、数据类型
    布尔类型
    bool var x bool 零值是false

    整数类型
    int8、int16、int32、int64、int
    uint8、uint16、uint32、uint64、uint
    int8是带符号的8位整数,范围是 -128~127
    uint8是不带符号的8位整数,范围是0~255
    int和uint的位数都是一个机器字长,64位系统就是64位,32位就是32

    浮点数类型
    float32
    float64

    字符串
    string 字面量只能用""``,不能用单引号
    name := "zhangsan"

    byte类型
    代表一个字节,也是uint8类型的别名。比如读取一个文件,这堆二进制内容就是又byte类型组成的数组。

    func main() {
        b, _:= ioutil.ReadFile("xxx.png")
        fmt.Println(reflect.TypeOf(b))
        fmt.Println(b)
    }
    

    rune类型
    上面说字符串不能用单引号,rune用单引号声明,这其实也暗示rune类型和字符也有点关系,它代表的是一个字符的[unicode码点]

    func main() {
        x := '张'
        fmt.Println(x, reflect.TypeOf(x))
    }
    

    如果看完了上面关于unicode的介绍,就会知道一个unicode码点,是4个字节。rune也是int32的别名。(至于为什么不是uint32,我也搞不懂为什么要这样)

    相关文章

      网友评论

          本文标题:go 第二篇(变量声明、数据类型)

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