• 【go语言学习】变量variable和常量constant


    一、 变量的声明(定义)和使用

    变量是为存储特定类型的值而提供给内存位置的名称。变量就是一小块内存,用于存储数据。
    变量的使用分为两步:1)声明,2)访问、赋值和取值

    1、 标准声明
    var a int
    a = 10
    

    2、类型推断

    var a = 10
    

    3、简短声明

    func test() {
        a := 10
    }
    

    4、批量声明

    var a, b, c int
    a, b, c = 1, 2, 3
    var x, y, z int = 1, 2, 3
    var (
           s = "hello"
           m = 10
           n = 20
    )
    

    5、匿名变量

    在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量_
    匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。

    a, _ := foo()
    

    6、 变量的使用注意事项

    • 变量必须先定义才能使用
    • go语言是强类型语言,变量的类型和赋值的类型必须一致
    • 同一个作用域内变量名不能冲突
    • 简短声明变量:=左边必须有一个变量是新的
    • 简短声明变量,不能定义全局变量
    • 变量的默认值(零值)
    • 变量定义了,就必须使用,否则编译无法通过

    二、 常量的声明(定义)和使用

    常量是恒定不变的值,多用于定义那些在程序运行期间不会改变的那些值。常量的定义和变量类似,使用关键字const

    1、常量声明
    const pi = 3.14
    const name string = "jack"
    
    2、常量组(枚举)
    const (
            MALE = 0
            FEMALE = 1
            UNKNOW = 2
    )
    

    常量组中如不指定类型和初始值,则和上一行非空常量值相同

    const (
            a = 10              //10
            b                   //10
            c = "name"          //"name"
            d                   //"name"
    )
    
    3、常量使用注意事项
    • 常量的数据类型只能是布尔、数字、字符串
    • 常量可以定义,而不使用
    • 常量定义时,必须赋值
    4、iota

    iota是go语言的常量计数器,只能在常量的表达式中使用
    iota在const关键字出现时将被重置为0
    const中每新增一行常量声明将使iota累加1

    const (
             a = iota     //0
             b            //1
             c            //2
    )
    
    const (
                a = iota   //0
                b          //1
                c          //2
                d = "ha"   //独立值,iota += 1
                e          //"ha"   iota += 1
                f = 100    //iota +=1
                g          //100  iota +=1
                h = iota   //7,恢复计数
                i          //8
                -          //跳过,iota += 1
                j          //10
        )
    
  • 相关阅读:
    [BZOJ2287]【POJ Challenge】消失之物(DP)
    [BZOJ1596] [Usaco2008 Jan]电话网络(树形DP || 贪心)
    [BZOJ3339] Rmq Problem(线段树)
    [BZOJ3378] [Usaco2004 Open]MooFest 狂欢节(树状数组)
    [BZOJ1595] [Usaco2008 Jan]人工湖(单调栈)
    [BZOJ1594] [Usaco2008 Jan]猜数游戏(二分 + 并查集)
    [POJ2778]DNA Sequence(AC自动机 + DP + 矩阵优化)
    [TyvjP1519] 博彩游戏(AC自动机 + DP)
    【模板】AC自动机
    [poj3744] Scout YYF I【概率dp 数学期望】
  • 原文地址:https://www.cnblogs.com/everydawn/p/13861072.html
Copyright © 2020-2023  润新知