Go—go语言常量

33 阅读1分钟

go语言常量

在Go程序中,常量可以是数值类型(包括整型、浮点数和复数类型)、布尔类型、字符串类型。

定义常量的语法

定义一个常量使用const关键字,语法格式如下:

const constantName.[type] =value

const: 定义常量关键字

constantName: 常量名称

type:常量类型

value:常量的值

实例

package main

import "fmt"

func main() {
	const PI float32 = 3.14
	//PI=3.15 常量不能重新赋值
	fmt.Printf("PI: %v\n", PI)
	const PI2 = 3.1415 //可以省略类型

	//批量声明
	const (
		a = 100
		b = 200
	)
	fmt.Printf("a: %v\n", a)
	fmt.Printf("b: %v\n", b)

        //多重赋值
	const w, h = 200, 300 
	fmt.Printf("w: %v\n", w)
	fmt.Printf("h: %v\n", h)
}

const同时声明多个常量时,如果省略了值,则表示和上面一行的值相同

package main

import "fmt"

func main() {
	const (
		a1 = 100
		a2
		a3
	)
	fmt.Printf("a1: %v\n", a1)  //100
	fmt.Printf("a2: %v\n", a2)  //100
	fmt.Printf("a3: %v\n", a3)  //100
}

iota

iota比较特殊,可以被认为是一个可被编译器修改的常量,它默认开始值是0,每调用一次加1,遇到const关键字时被重置为0。

package main

import "fmt"

func main() {
	//iota
	const (
		a1 = iota   //0
		a2 = iota   //i++
		a3 = iota
	)
	fmt.Printf("a1: %v\n", a1)  //0
	fmt.Printf("a2: %v\n", a2)  //1
	fmt.Printf("a3: %v\n", a3)  //2
}

使用_跳过某些值

package main

import "fmt"

func main() {
	const (
		b1 = iota //0
		_         //1
		b2 = iota //2
	)
	fmt.Printf("b1: %v\n", b1) //0
	fmt.Printf("b2: %v\n", b2) //2
}

iota声明中间插队

package main

import "fmt"

func main() {
	const (
		a1 = iota
		a2 = 100
		a3 = iota
	)
	fmt.Printf("a1: %v\n", a1) //0
	fmt.Printf("a2: %v\n", a2) //100
	fmt.Printf("a3: %v\n", a3) //2
}