Go编程基础04-常量与运算符

常量的定义

  • 常量的值在编译时就已经确定
  • 常量的定义格式与变量基本相同
  • 等号右侧必须是常量或常量表达式
  • 常量表达式中的函数必须是内置函数
package main

import "fmt"

// 常量定义
const a int = 1
const b = 'A'

// 常量组
const (
	c = a
	d = a + 2
	e, f = 1, 'B'
)

func main() {
	fmt.Println(a) // 1
	fmt.Println(b) // 65
	fmt.Println(c) // 1
	fmt.Println(d) // 3
	fmt.Println(e) // 1
	fmt.Println(f) // 66
}

常量的初始化规则与枚举

  • 在定义常量组时,如果不提供初始值,将使用上一行的表达式。(如果要使用该规则,要求每一行的常量个数相同
package main

import "fmt"

// 常量组
const (
	c = 1
	d
	e
)

func main() {
	fmt.Println(c) // 1
	fmt.Println(d) // 1
	fmt.Println(e) // 1
}

表达式与常量表达式的区别在于常量表达式的值是确定的,可知的

-iota是常量的计数器,从0开始,常量组中每定义一个常量,则递增加1.
通过初始化规则与iota可以达到枚举的效果;
每遇到一个const关键字,iota就会重置为0.

package main

import "fmt"

// 常量组
const (
	a = 'A'  // 此时iota=0
	b        // 继承A的表达式'A',iota=1
	c        // 继承A的表达式'A',iota=2
	d = iota // 继承A的表达式'A',iota=3
)

const (
	e = iota // 遇到新的const,iota=0
)

func main() {
	fmt.Println(a) // 65
	fmt.Println(b) // 65
	fmt.Println(c) // 65
	fmt.Println(d) // 65
	fmt.Println(e) // 0
}

猜你喜欢

转载自blog.csdn.net/Loiterer_Y/article/details/83352922