Go语言常量

Posted 鸿渐之翼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言常量相关的知识,希望对你有一定的参考价值。

常量是一个程序语言中简单值的标识符,在程序运行时,不会被修改的量。
Go语言常量定义格式

const a [type] = value

普通常量

package main

import "fmt"
func main() {
   const LENGTH int = 4
   const WIDTH int = 5  
   var area int
   const a, b, c = 2, false, "str" //多重赋值
   area = LENGTH * WIDTH
   fmt.Printf("面积为 : %d", area)
   println()
   println(a, b, c)  
}

特殊常量iota

可以由编译器修改的常量

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

这里a默认被赋值为0,那么b=1,c=2,也可以简写为

const (
    a = iota
    b 
    c 
)

实例:

package main

import "fmt"

func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "hello"   //独立值,iota += 1
            e          //"hello"    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

实例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

iota表示从0开始自动加1,注意这里使用的是左移符号<<
它的数学意义是:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。所以j=6
i=1:左移 0 位,不变仍为 1。
j=3:左移 1 位,变为二进制 110,即 6。
k=3:左移 2 位,变为二进制 1100,即 12。
l=3:左移 3 位,变为二进制 11000,即 24。
注:<<n==*(2^n)。

以上是关于Go语言常量的主要内容,如果未能解决你的问题,请参考以下文章

004_go语言中的常量

go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 变量作用域:能够使用变量的代码范围

你不知道的 Go 之 const

Go 语言变量及常量的定义与使用

你不知道的 Go 之 const

Go 系列教程 —— 5. 常量