说明
拿 golang.org/x/tools/cmd/stringer
源码做修改,用法相同。
新增 go generate
生成代码包含解析方法 func Parse%{typeName}String(s string) (%{typeName}s, bool)
。
Example
package event
type Event int
const (
InsertCoinEvent Event = iota
SelectItemEvent
ItemConfirmEvent
)
生成代码
package event
import "strconv"
func _() {
var x [1]struct{}
_ = x[InsertCoinEvent-0]
_ = x[SelectItemEvent-1]
_ = x[ItemConfirmEvent-2]
}
const _Event_name = "InsertCoinEventSelectItemEventItemConfirmEvent"
var _Event_index = [...]uint8{0, 15, 30, 46}
var _Event_inst = [...]Event{InsertCoinEvent, SelectItemEvent, ItemConfirmEvent}
func (i Event) String() string {
if i < 0 || i >= Event(len(_Event_index)-1) {
return "Event(" + strconv.FormatInt(int64(i), 10) + ")"
}
return _Event_name[_Event_index[i]:_Event_index[i+1]]
}
func ParseEventString(s string) (Event, bool) {
if len(s) == 0 || len(_Event_inst) == 0 {
return 0, false
}
for _, inst := range _Event_inst {
if inst.String() == s {
return inst, true
}
}
return 0, false
}