欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Go语言基础枚举的用法及示例详解

程序员文章站 2022-03-10 13:22:31
目录概述一、普通枚举二、自增枚举注意代码概述将变量的值一一列举出来,变量只限于列举出来的值的范围内取值go语言中没有枚举这种数据类型的,但是可以使用const配合iota模式来实现一、普通枚举cons...

Go语言基础枚举的用法及示例详解

概述

将变量的值一一列举出来,变量只限于列举出来的值的范围内取值

go语言中没有枚举这种数据类型的,但是可以使用const配合iota模式来实现

一、普通枚举

const (
	 cpp = 0
	 java = 1
	 python = 2
	 golang = 3
)

二、自增枚举

iota只能在常量的表达式中使用

fmt.println(iota)  //undefined: iota

它默认开始值是0,const中每增加一行加1

const (
        a = iota  //0
        c         //1
        d         //2
    )

每次 const 出现时,都会让 iota 初始化为0

const d = iota    // a=0
const (
	  e = iota     //b=0
	  f            //c=1
)

如果中断iota,必须显式恢复!!!

const ( 
    low = iota    //0
    medium        //1
    high = 100   //100
    super        //100
    band = iota  //4
)

如果是同一行,值都一样

const (
i          = iota
j1, j2, j3 = iota, iota, iota
k          = iota
)

可跳过的值

const (
		k1 = iota // 0
		k2        // 1
		_         //2
		_         //3
		k3       // 4
	)

中间插入一个值

const (
	sun = iota //sun = 0
	mon        // mon = 1
	tue = 7    //7
	thu = iota // 3
	fri        //4
)

注意

  • iota 必须配合const 使用,否则undefined: iota
  • 每次 const 出现时,都会让 iota 初始化为0
  • 如果是同一行,值都一样

代码

package main
import "fmt"
func main() {
	//普通枚举
	const (
		cpp    = 0
		java   = 1
		python = 2
	)
	fmt.printf("cpp=%d  java=%d  python=%d\n", cpp, java, python) //a=0  b=1  c=2
	//1.iota只能在常量的表达式中使用
	//fmt.println(iota)  //undefined: iota
	//2.它默认开始值是0,const中每增加一行加1
	const (
		a = iota //0
		b        //1
		c        //2
	)
	fmt.printf("a=%d  b=%d  c=%d\n", a, b, c) //a=0  b=1  c=2
	//3.每次 const 出现时,都会让 iota 初始化为0
	const d = iota // a=0
	const (
		e = iota //b=0
		f        //c=1
	)
	fmt.printf("d=%d  e=%d  f=%d\n", d, e, f) //d=0  e=0  f=1
	//4.如果中断iota,必须显式恢复!!!
	const (
		low = iota //0
		medium //1
		high = 100 //100
		super //100
		band = iota //4
	)
	//low=0  medium=1  high=100  super=100  band=4
	fmt.printf("low=%d  medium=%d  high=%d  super=%d  band=%d\n", low, medium, high, super, band)
	//5.如果是同一行,值都一样
	const (
		i          = iota
		j1, j2, j3 = iota, iota, iota
		k          = iota
	)
	//i=0  j1=1  j2=1  j3=1  k=2
	fmt.printf("i=%d  j1=%d  j2=%d  j3=%d  k=%d\n", i, j1, j2, j3, k)
	//6.可跳过的值
	const (
		k1 = iota // 0
		k2        // 1
		_         //2
		_         //3
		k3        // 4
	)
	//	k1=0  k2=1  k3=4
	fmt.printf("k1=%d  k2=%d  k3=%d \n", k1, k2, k3)
	//7.中间插入一个值
	const (
		sun = iota //sun = 0
		mon        // mon = 1
		tue = 7    //7
		thu = iota // 3
		fri        //4
	)
	//sun=0  mon=1  tue=7  thu=3  fri=4
	fmt.printf("sun=%d  mon=%d  tue=%d  thu=%d  fri=%d\n", sun, mon, tue, thu, fri)

}

以上就是go语言基础枚举的用法及示例详解的详细内容,更多关于go语言枚举的资料请关注其它相关文章!