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()方法,获取对应的月份名称字符串。

