• The way to Go(7): 常量


    Reference:

    常量

    常量使用关键字 const 定义,用于存储不会改变的数据。

    const identifier [type] = value

    在 Go 语言中,你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。

    • 显式类型定义: const b string = "abc"
    • 隐式类型定义: const b = "abc"

    一个没有指定类型的常量被使用时,会根据其使用环境而[推断]出它所需要具备的类型。换句话说,未定义类型的常量会在必要时刻根据上下文来获得相关类型。

    var n int
    f(n + 5) // 无类型的数字型常量 “5” 它的类型在这里变成了 int
    

    常量的值必须是能够在编译时就能够[确定]的。

    • True: const c1 = 2/3
    • False: const c2 = getNumber()

    因为在编译期间自定义函数均属于未知,因此无法用于常量的赋值,但内置函数可以使用,如:len()。

    数字型的常量是没有大小和符号的,并且可以使用任何精度而不会导致溢出:

    const Ln2 = 0.693147180559945309417232121458
    			176568075500134360255254120680009
    const Log2E= 1/Ln2 // this is a precise reciprocal
    const Billion = 1e9 // float constant
    const hardEight = (1 << 100) >> 97
    

    反斜杠 可以在常量表达式中作为多行的连接符使用。无需担心常量之间的类型转换问题。

    当常量赋值给一个精度过小的数字型变量时,可能会因为无法正确表达常量所代表的数值而导致溢出,这会在编译期间就引发错误。

    const beef, two, c = "eat", 2, "veg"
    const Monday, Tuesday, Wednesday, Thursday, Friday, Saturday = 1, 2, 3, 4, 5, 6
    const (
    	Monday, Tuesday, Wednesday = 1, 2, 3
    	Thursday, Friday, Saturday = 4, 5, 6
    )
    

    常量还可以用作枚举(switch/case)。

    iota

    在这个例子中,iota 可以被用作枚举值:

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

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

    const (
    	a = iota
    	b
    	c
    )
    

    每遇到一次 const 关键字,iota 就重置为 0。

    常量之所以为常量就是恒定不变的量,因此我们无法在程序运行过程中修改它的值。

    2017.8

  • 相关阅读:
    Oracle死锁
    Oralce新建用户及表空间维护
    oracle作业运行中,无法停止
    ora-01652 无法通过128 (在表空间 TEMP中)扩展temp段
    Centos7搭建Apache2.4
    LAMP搭建
    Mysql数据库
    VSFTPD服务器
    windows下划分逻辑分区
    sendmail邮件服务器
  • 原文地址:https://www.cnblogs.com/qq952693358/p/7305241.html
Copyright © 2020-2023  润新知