• Go语言的变量和常量(三)


    我想吐槽下网上的很多所谓的“零基础教程”,因为那根本不算零基础。就拿语言教程来说,一上来就说怎么定义变量的怎么算零基础呢?零基础应该是先告诉你啥叫变量。

    所以我从不起零基础的标题。我这也不是教程,只是我的一个记录。当然我会做笔记很仔细。

    变量

    go语言的变量定义跟JavaScript很像,也是用 var:

    var name = "jay"

    但它也不同,作为静态语言,他可以定义变量的同时指定变量类型:

    var name string = "jay"

    var age int // 你也可以只定义不赋值

    如果你定义变量时直接赋值而没有指定类型,会进行类型推断的,所以这样是错的:

    var age = 12
    
    age = "20"  // 因为age初始化时被推断为int型,所以不可以变为string型。(注意:赋值操作要在函数里执行。)

    除此之外,以下也是错误的,红色警示下

    var name  // 定义变量时,既不赋值也不指定类型,错误
    
    var str = 'hello,world'  // 字符串不可以使用单引号,单引号在 go 中表示一个字符

    批量声明

    go 支持批量定义变量,两种方式:

    // 方式一
    var age,name = 12,"jay"
    
    // 方式二
    var (
        a = 1
        b = "hello"
    )

    短变量声明

    函数内部,你可以使用一种更简单的方式定义变量:

    package main
    
    import (
        "fmt"
    )
    // 全局变量m
    var m = 1
    
    func main() {
        n := 2
        m := 3  // 函数内部可使用更简单的变量定义方式
        fmt.Println(m, n)
    }

    匿名变量

    匿名变量用一个下划线 表示,多用于占位,表示忽略值。它不占用命名空间,不会分配内存,所以匿名变量之间也不存在重复声明:

    var a,_ = 1,2
    var _,b = 3,4 // _ 不会报重复声明的错误
    
    func main() {
        fmt.Println(a) //1
        fmt.Println(b) //4
        fmt.Print(_) // 报错,因为 _ 不是一个值
    }

    常量

    go 中的常量跟 es6 中的也像,也是使用 const :

    const pi = 3.1415
    const e = 2.7182

    常量被定义时必须赋值,并且后续不能再改变常量的值。

    多个常量一起定义:

    const (
        pi = 3.1415
        e = 2.7182
    )

    const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:

    const(
        a = 10
        b
        c
    )

    等同于:
    const(
    a = 10
    b = 10
    c = 10
    )

    a,b,c的值都是10

    iota

    这是一个有趣的东西。iota 是 go 语言的常量计数器,只能在常量的表达式中使用。

    iota 在 const 关键字出现时将被重置为 0。const 中每新增一行常量声明将使 iota 计数一次。

    来看几个例子:

    const(
        a = iota // 0
        b        // 1
        c        // 2
    )


    const(
    a = iota // 0
    b = 100 // 100
    c = iota // 2
    d // 3
    )


    const(
    a, b = iota + 1, iota + 2 // 1,2
    c, d // 2,3
    e, f // 3,4
    )

    你有get到它的点吗?

    就这样。

  • 相关阅读:
    Android属性动画ObjectAnimator的使用1
    通过Android反编译技术研究国内陌生人社交即时通讯的技术方案
    滴滴出行开源项目doraemonkit食用指南
    Android开发利器之pidcat
    Spinner在Dialog中的使用效果
    python抓取知识星球精选帖,制作为pdf文件
    [设计模式]观察者模式
    C语言实现进度条
    [设计模式]策略模式
    线程链表与线程切换
  • 原文地址:https://www.cnblogs.com/wjaaron/p/11437441.html
Copyright © 2020-2023  润新知