Golang中的"枚举"实现:不使用iota而用字符串的方法

Golang中的"枚举"实现:不使用iota而用字符串的方法 我按照教程操作,但所有类型都是整数值,有人能帮我如何管理它吗? 我输入的值是’Maggio’,要显示的值是’E’

type Month string
const (
	Gennaio   Month = "A"
	Febbraio  Month = "B"
	Marzo     Month = "C"
	Aprile    Month = "D"
	Maggio    Month = "E"
	Giugno    Month = "H"
	Luglio    Month = "L"
	Agosto    Month = "M"
	Settembre Month = "P"
	Ottobre   Month = "R"
	Novembre  Month = "S"
	Dicembre  Month = "T"
)

var months= []string{"Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"}

更多关于Golang中的"枚举"实现:不使用iota而用字符串的方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html

8 回复

能否提供一个示例代码?

更多关于Golang中的"枚举"实现:不使用iota而用字符串的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我已解决

谢谢

最后,我尝试了并且函数可以正常工作 感谢大家 <3

你是指像这个Go语言游乐场这样吗?

当你发布关于问题及其最终解决方案的简短总结时,这对遇到类似问题的其他人总是很有帮助。

或者这个怎么样?

https://play.golang.org/p/E1Np2kC-VKX

谢谢
但是我在结构体中有一个月份字段?它应该能正常工作吗?因为我试过了,但没有返回"E"这个值

在Go语言中,可以通过字符串类型实现枚举,并添加方法来处理值与显示名称之间的映射。以下是基于你的代码的改进版本,其中添加了一个Display()方法,用于根据给定的Month值返回对应的月份名称。

type Month string

const (
	Gennaio   Month = "A"
	Febbraio  Month = "B"
	Marzo     Month = "C"
	Aprile    Month = "D"
	Maggio    Month = "E"
	Giugno    Month = "H"
	Luglio    Month = "L"
	Agosto    Month = "M"
	Settembre Month = "P"
	Ottobre   Month = "R"
	Novembre  Month = "S"
	Dicembre  Month = "T"
)

// 定义一个映射,将Month值关联到对应的月份名称
var monthNames = map[Month]string{
	Gennaio:   "Gennaio",
	Febbraio:  "Febbraio",
	Marzo:     "Marzo",
	Aprile:    "Aprile",
	Maggio:    "Maggio",
	Giugno:    "Giugno",
	Luglio:    "Luglio",
	Agosto:    "Agosto",
	Settembre: "Settembre",
	Ottobre:   "Ottobre",
	Novembre:  "Novembre",
	Dicembre:  "Dicembre",
}

// 为Month类型添加Display方法,返回对应的月份名称
func (m Month) Display() string {
	if name, exists := monthNames[m]; exists {
		return name
	}
	return "Unknown"
}

使用示例:

func main() {
	month := Maggio
	fmt.Println(month.Display()) // 输出: Maggio
}

这种方法允许你通过Month值(如Maggio)调用Display()方法,获取对应的月份名称字符串。

回到顶部