mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-16 17:22:21 +00:00
[Go] Make enums into real types, add String() (#5235)
* [Go] Make enums into real types, add String() This changes the generated code for enums: instead of type aliases, they're now distinct types, allowing for better type-checking. Some client code may have to be changed to add casts. Enum types now have a String() method, so they implement fmt.Stringer. An EnumValues map is now generated, in addition to the existing EnumNames map, to easily map strings to values. Generated enum files are now gofmt-clean. Fixes #5207 * use example.ColorGreen explicitly * use valid enum value in mutation test, add new test for "invalid" enum * add length check and comment
This commit is contained in:
@@ -2,18 +2,34 @@
|
||||
|
||||
package Example
|
||||
|
||||
type AnyUniqueAliases = byte
|
||||
import "strconv"
|
||||
|
||||
type AnyUniqueAliases byte
|
||||
|
||||
const (
|
||||
AnyUniqueAliasesNONE AnyUniqueAliases = 0
|
||||
AnyUniqueAliasesM AnyUniqueAliases = 1
|
||||
AnyUniqueAliasesT AnyUniqueAliases = 2
|
||||
AnyUniqueAliasesM2 AnyUniqueAliases = 3
|
||||
AnyUniqueAliasesM AnyUniqueAliases = 1
|
||||
AnyUniqueAliasesT AnyUniqueAliases = 2
|
||||
AnyUniqueAliasesM2 AnyUniqueAliases = 3
|
||||
)
|
||||
|
||||
var EnumNamesAnyUniqueAliases = map[AnyUniqueAliases]string{
|
||||
AnyUniqueAliasesNONE:"NONE",
|
||||
AnyUniqueAliasesM:"M",
|
||||
AnyUniqueAliasesT:"T",
|
||||
AnyUniqueAliasesM2:"M2",
|
||||
AnyUniqueAliasesNONE: "NONE",
|
||||
AnyUniqueAliasesM: "M",
|
||||
AnyUniqueAliasesT: "T",
|
||||
AnyUniqueAliasesM2: "M2",
|
||||
}
|
||||
|
||||
var EnumValuesAnyUniqueAliases = map[string]AnyUniqueAliases{
|
||||
"NONE": AnyUniqueAliasesNONE,
|
||||
"M": AnyUniqueAliasesM,
|
||||
"T": AnyUniqueAliasesT,
|
||||
"M2": AnyUniqueAliasesM2,
|
||||
}
|
||||
|
||||
func (v AnyUniqueAliases) String() string {
|
||||
if s, ok := EnumNamesAnyUniqueAliases[v]; ok {
|
||||
return s
|
||||
}
|
||||
return "AnyUniqueAliases(" + strconv.FormatInt(int64(v), 10) + ")"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user