我正在尝试从枚举的reflect.Type和值https://play.golang.org/p/PqklMe_Z4WX创建一个enum实例
package main
import (
"fmt"
"reflect"
)
type WeekDay string
const (
SUNDAY WeekDay = "sunday"
MONDAY WeekDay = "monday"
)
func (day WeekDay) WeekDay() bool {
switch day {
case SUNDAY, MONDAY:
return true
default:
return false
}
}
func main() {
rt := reflect.TypeOf(WeekDay("sunday"))
x := reflect.New(rt)
x = x.Elem()
x.Set(reflect.ValueOf("sunday"))
fmt.Println(x.Interface())
}
有没有办法在golang中创建一个enum的实例,它的类型和可能的常量值?
发布于 2018-06-05 07:50:38
使用reflect.New(t).Elem()
获取值,使用SetString
设置值。
// t is the reflect.Type for a Weekday
t := reflect.TypeOf(WeekDay("sunday"))
// v is reflect.Value for a WeekDay, initialized to the zero value ""
v := reflect.New(t).Elem()
// Set the value of v to "sunday"
v.SetString("sunday")
https://stackoverflow.com/questions/50690207
复制相似问题