Github: lion
比正常的实现快一点。
可以不写 tag 来收集 metainfo 。
可以获取未导出字段(仅限你自己定义的类型)。
新加了一个包enums
,在init
函数执行时,为当前包内的enum定义生成String
方法。如果文件生成,则会输出需要重新编译的提醒。
type ErrorKind int
const (
ErrorKindA ErrorKind = iota
ErrorKindB
ErrorKindC
)
func init() {
enums.Generate(func() *enums.Options[ErrorKind] {
return &enums.Options[ErrorKind]{
RemoveCommonPrefix: true,
NameOverwrites: map[ErrorKind]string{ErrorKindC: "CCCCC"},
AllSlice: true,
AllSliceName: "AllErrorKinds",
// JSON: true, // 生成 MarshalJSON/UnmarshalJSON 方法
// Sql: true, // 生成 Value/Scan 方法
}
})
}
// Code generated by "github.com/zzztttkkk/lion/enums", DO NOT EDIT
// Code generated @ 1736396153
package vld
import "fmt"
func (ev ErrorKind) String() string {
switch(ev){
case ErrorKindA: {
return "A"
}
case ErrorKindB: {
return "B"
}
case ErrorKindC: {
return "CCCCC"
}
default: {
panic(fmt.Errorf("vld.ErrorKind: unknown enum value, %d", ev))
}
}
}
func init(){
AllErrorKinds = append(AllErrorKinds, ErrorKindA)
AllErrorKinds = append(AllErrorKinds, ErrorKindB)
AllErrorKinds = append(AllErrorKinds, ErrorKindC)
}