例如,我只想用他们的名字定义一组天:
[
{Monday=1, 'Monday'},
{Tuesday=2, 'Tuesday'},
{Thursday=3, 'Thursday'},
...
{Sunday=4, 'Sunday'},
]
以下是我知道的方法:type MyDay int
const (
Monday MyDay = 0
Tuesday MyDay = 1
)
func (d MyDay) desc() string {
switch(d) {
case Monday: return "Monday";
case Tuesday: return "Tuesday"
}
}
const (
Monday int = 0
Tuesday int = 1
)
var dayDescs []string {
Monday: "Monday",
Tuesday: "Tuesday",
}
两者都有不足。如果我想增加一天,我必须修改两个地方。如果我只是在一个地方添加它,它就无法工作。我知道另一种方法是使用标签,但反射会对效率产生副作用。
有没有一种简单的方法来声明一个常量整数及其描述?
最佳答案
我认为最好的方法是实现stringer
接口(interface) String() string
方法。
type MyDay int
const (
Monday MyDay = iota
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
)
func (d MyDay) String() string {
return []string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}[d]
}
func main() {
fmt.Println(Monday.String())
}
关于go - 用描述定义一组常数的最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63126664/