跳转至

05 golang 基础语法之常量

常量

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

常量可以为 布尔型、 数字型、字符串型

常量的定义格式

const identifier [type] = value 

可以省略类型, 因为编译器可以通过变量的值来推断其类型

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

多个相同类型的定义可以简写为

const a, b string = "abc", "bcd"

演示常量的应用

例子

// const trading 

package main

import "fmt"

func main() {
    const LENGTH int = 10 
    const WIDTH int = 20 
    var area int
    const a, b, c = 1, 2, 3

    area = LENGTH * WIDTH
    fmt.Printf("面积为: %d \n", area)
    fmt.Println()
    fmt.Println(a, b, c)
}

运行结果

$ go run const_trading.go
面积为: 200 

1 2 3

常量还可以用作枚举

const (
  right = 1 
  wrong = 0
  middle = 2
)

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

例子

// const trading 

package main

import "unsafe"

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

func main() {
    println(a, b, c)
}

运行结果

$ go run const_trading.go
abc 3 16

iota

  • iota : 特殊常量, 可以认为是可以被编译器修改的的常量
  • ioat 在const 关键字出现时被重置成0 (const 内部的第一行之前,) const 中每增加一行常量声明, 都会使得iota 计数一次(iota 可以理解为const 语句中的行索引)
const (
    a = iota
  b = iota
  c = iota
)

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

const (
    a = iota
  b
  c
)

例子

// const trading 

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)

}

运行结果为

$ go run const_trading.go
0 1 2 ha ha 100 100 7 8