老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

Go语言常量之定义与技巧!老男孩IT教育

老男孩IT教育

技术博客

2020年12月2日 13:45

常量是一个简单值的标识符,在程序运行时,永远是只读的,不能修改。

  常量是一个简单值的标识符,在程序运行时,永远是只读的,不能修改。

  使用 const 关键字定义常量。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

  常量定义

  第一种,显式类型定义

const name string = "oldboy"

  第二种,隐式类型定义,一个未指定类型的常量由上下文来决定其类型

const age = 18

  第三种,一次性定义多个常量

const Mon, Tues, Wed, Thur, Fri, Sat, Sun = 1, 2, 3, 4, 5, 6, 7

const (
    name = "oldboy"
    age  = 18
)

  第四种,常量可以用len(),cap(),unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过:

const (
    a = "abc"
    b = len(a)
    c = unsafe.Sizeof(b)
)

  常量技巧

  未使用的局部常量不会引发编译错误。实例如下:

package main

func main() {
    const str = "The old boy welcomes you."
}

  在常量组中,如不提供类型和初始化值,那么视作与上一个常量相同。实例如下:

package main

import (
    "fmt"
)

func main() {
    const (
        name = "oldboy"
        nickname
    )
    fmt.Printf("name : %s, nickname : %s\n", name, nickname)
}

  运行结果:

name : oldboy, nickname : oldboy

  特殊常量

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

  在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。

  关键字 iota 定义常量组中从 0 开始按行计数的自增枚举值。实例如下:

package main

import (
    "fmt"
)

const (
    Sunday = iota
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
)

func main() {
    fmt.Println(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
}

  运行结果:

0 1 2 3 4 5 6

  在同一常量组中,可以提供多个 iota,它们各自增长。实例如下:

package main

import (
    "fmt"
)

const (
    A1, B1 = iota, iota << 10
    A2, B2
)

func main() {
    fmt.Println(A1, B1, A2, B2)
}

  运行结果:

0 0 1 1024

  如果 iota 自增被打断,须显式恢复。实例如下:

package main

import (
    "fmt"
)

const (
    Sun = iota
    Mon
    Tues
    Wed = "Wednesday"
    Thur
    Fri = iota
    Sat
)

func main() {
    fmt.Println(Sun, Mon, Tues, Wed, Thur, Fri, Sat)
}

  运行结果:

0 1 2 Wednesday Wednesday 5 6

  老男孩教育在教授学员技能和技巧的同时,提供多重就业服务。实行1对1就业服务,直至转正的就业跟踪,建立全面的、完备的就业服务体系。全企业真实案例结合理论实战、1对1的模拟面试,帮助学员从学校过渡到社会、从学员过渡到员工,无缝对接企业的工作岗位。

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。