zoukankan      html  css  js  c++  java
  • go语言入门教程:基本语法—常量constant

    一、常量的使用

    1.1 常量声明

    常量是一个简单值的标识符,在程序运行时,不会被修改的量。

    const identifier [type] = value
    显式类型定义: const b string = "abc"
    隐式类型定义: const b = "abc"
    package main
    ​
    import "fmt"
    ​
    func main() {
       const LENGTH int = 10
       const WIDTH int = 5   
       var area int
       const a, b, c = 1, false, "str" //多重赋值
    ​
       area = LENGTH * WIDTH
       fmt.Printf("面积为 : %d", area)
       println()
       println(a, b, c)   
    }

    运行结果:

    面积为 : 50
    1 false str

    常量可以作为枚举,常量组

    const (
        Unknown = 0
        Female = 1
        Male = 2
    )

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

    package main
    ​
    import (
        "fmt"
    )
    ​
    func main() {
        const (
            x uint16 = 16
            y
            s = "abc"
            z
        )
        fmt.Printf("%T,%v
    ", y, y)
        fmt.Printf("%T,%v
    ", z, z)
    }

    运行结果:

    uint16,16
    string,abc

    常量的注意事项:

    • 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
    • 不曾使用的常量,在编译的时候,是不会报错的
    • 显示指定类型的时候,必须确保常量左右值类型一致,需要时可做显示类型转换。这与变量就不一样了,变量是可以是不同的类型值

    1.2 iota

    iota,特殊常量,可以认为是一个可以被编译器修改的常量

    iota 可以被用作枚举值:

    const (
        a = iota
        b = iota
        c = iota
    )

    第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:

    const (
        a = iota
        b
        c
    )
    iota 用法
    
    package main
    ​
    import "fmt"
    ​
    func main() {
        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
        )
        fmt.Println(a,b,c,d,e,f,g,h,i)
    }

    运行结果:

    0 1 2 ha ha 100 100 7 8 

    如果中断iota自增,则必须显式恢复。且后续自增值按行序递增

    自增默认是int类型,可以自行进行显示指定类型

    数字常量不会分配存储空间,无须像变量那样通过内存寻址来取值,因此无法获取地址。

  • 相关阅读:
    怎样应对突发性的开发需求
    ASP.NET过滤HTML标签只保留换行与空格的方法
    sqlserver 各种判断是否存在(表名、函数、存储过程等)
    Timing advance of GSM(时间提前量)
    对.NET中Hashtable和ArryList的理解
    GPS原始经纬度转百度经纬度
    baidu经纬度坐标与google经纬度坐标都转换
    .NET资料之-根据两点经纬度计算直线距离
    .net处理JSON简明教程
    在asp.net中要不使用其他插件的情况下只能使用定时器来检查, 并执行任务.
  • 原文地址:https://www.cnblogs.com/coffees/p/10788558.html
Copyright © 2011-2022 走看看