enumizer
1.0.0
Enumizer는 Golang이 열거적 인 도우미를 생성하고 스위치 명세서에서 열거 적용 범위를 확인할 수있는 명령 줄 도구입니다.
$ go install github.com/neglect-yp/enumizer@latest
시도하기 전에 마커 주석을 추가해야합니다. Examples 섹션을 참조하십시오.
$ enumizer help
enumizer is a command-line tool to generate enum helpers and check enum coverage.
Usage:
enumizer [command]
Examples:
* Generate enum helpers
enumizer generate ./...
* Check enum coverage
enumizer cover ./...
Available Commands:
completion Generate the autocompletion script for the specified shell
cover Check that switch statements cover all variants of passed enum
generate Generate enum helpers that include stringer and validation methods
help Help about any command
Flags:
-h, --help help for enumizer
Use "enumizer [command] --help" for more information about a command.
// enumizer:target 과 같은 마커 주석을 추가하십시오.
package myenum
type MyEnum int
// enumizer:target
const (
A MyEnum = iota
B
C
) 그런 다음 enumizer generate ./... 생성 된 파일 이름은 기본적으로 enumizer.gen.go 입니다. enumizer.gen.go 는 다음과 같습니다.
// Code generated by enumizer; DO NOT EDIT.
package myenum
import "fmt"
var myEnumSet = map [ MyEnum ] struct {}{
A : {},
B : {},
C : {},
}
func MyEnumList () [] MyEnum {
ret := make ([] MyEnum , 0 , len ( myEnumSet ))
for v := range myEnumSet {
ret = append ( ret , v )
}
return ret
}
func ( m MyEnum ) String () string {
switch m {
case A :
return "A"
case B :
return "B"
case C :
return "C"
default :
return "<unknown MyEnum>"
}
}
func ( m MyEnum ) IsValid () bool {
_ , ok := myEnumSet [ m ]
return ok
}
func ( m MyEnum ) Validate () error {
if ! m . IsValid () {
return fmt . Errorf ( "MyEnum(%v) is invalid" , m )
}
return nil
} 그리고 스위치 명령문이 전달 된 열거의 모든 변형을 다루는지 확인할 수 있습니다. 다음과 같은 MyEnum 사용하는 코드가있는 경우 Switch 문에 A 및 C 사례가 없으므로 경고됩니다.
package myenumuser
import "github.com/neglect-yp/enumizer/examples/myenum"
func Foo ( a myenum. MyEnum ) {
switch a {
case myenum . B :
}
}$ enumizer cover ./examples/...
/<path to homedir>/enumizer/examples/myenumuser/myenumuser.go:6:2: this switch statement doesn't cover enum variants. missing cases: A, C