02-常量(const)

@

1 概述

  • 特点

在程序运行时,不会被修改的量。

  • 常量类型

只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

2 语法

2.1 单个常量定义

const 常量名 [类型] = 值

2.2 多个常量定义1

const 常量1, 常量2, 常量3 = 值1, 值2, 值3

2.3 多个常量定义2

const (
    常量1 = 值1
    常量2 = 值2
    常量3 = 值3
)

3. iota

1) 概念

一个特殊常量,可以被编译器修改。

iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

2)示例1

  • 代码:
package main

import "fmt"

func main() {
    const (
            a = iota
            b
            c 
            d = "ha"
            e
            f = 100
            g
            h = iota  
            i
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}
  • 结果:
0 1 2 ha ha 100 100 7 8

注意,当d被定义为字串ha 后,后边的e也被定义为ha,但是ota会继续计数。

3)示例2

  • 代码:
package main

import "fmt"
const (
    i=1<<iota
    j=3<<iota
    k
    l
)

func main() {
    fmt.Println("i=",i)
    fmt.Println("j=",j)
    fmt.Println("k=",k)
    fmt.Println("l=",l)
}
  • 输出结果
i= 1
j= 6
k= 12
l= 24

说明:

i=1<<iota 表示i 等于1左移iota位,此时iota位0,因此代码解释如下:

i=1:左移 0 位,不变仍为 1;

j=3:左移 1 位,变为二进制 110, 即 6;

k=3:左移 2 位,变为二进制 1100, 即 12;

l=3:左移 3 位,变为二进制 11000,即 24


posted on 2021-11-16 21:33  运维开发玄德公  阅读(58)  评论(0编辑  收藏  举报  来源

导航