【golang】每日chatGPT:golang中实现ENUM枚举类型 | go enum

1、golang中是没有枚举的

在golang极简的哲学思想中,没有内置枚举类型

这里我们通过map+iota去实现一个枚举类型

1.1、需求

枚举值如下:

key value
1 发电类
2 储能类
13 负荷类

1.2、自定义枚举类

// 定义一个类型
type TYPEID int

// 定义key(数值类型)
const (
	DEVICE_TYPE_ID1 TYPEID = iota + 1
	DEVICE_TYPE_ID2
	DEVICE_TYPE_ID3
)

// 定义枚举值
var ENUM_DEVICE_TYPE_ENUM = map[TYPEID]string{
    
    
	DEVICE_TYPE_ID1: "发电类",
	DEVICE_TYPE_ID2: "储能类",
	DEVICE_TYPE_ID3: "负荷类",
}

1.3、测试

func main() {
    
    
	for i := 1; i < 4; i++ {
    
    
		fmt.Println(ENUM_DEVICE_TYPE_ENUM[TYPEID(i)])
	}
	fmt.Println("=========")
	fmt.Println(ENUM_DEVICE_TYPE_ENUM[DEVICE_TYPE_ID2])
}

打印如下:

发电类
储能类
负荷类
=========
储能类

1.4、完整代码

package main

import "fmt"

type TYPEID int

const (
	DEVICE_TYPE_ID1 TYPEID = iota + 1
	DEVICE_TYPE_ID2
	DEVICE_TYPE_ID3
)

var ENUM_DEVICE_TYPE_ENUM = map[TYPEID]string{
    
    
	DEVICE_TYPE_ID1: "发电类",
	DEVICE_TYPE_ID2: "储能类",
	DEVICE_TYPE_ID3: "负荷类",
}

func main() {
    
    
	for i := 1; i < 4; i++ {
    
    
		fmt.Println(ENUM_DEVICE_TYPE_ENUM[TYPEID(i)])
	}
	fmt.Println("=========")
	fmt.Println(ENUM_DEVICE_TYPE_ENUM[DEVICE_TYPE_ID2])
}

猜你喜欢

转载自blog.csdn.net/wanglei19891210/article/details/131889376