mirror of
https://github.com/abice/go-enum.git
synced 2026-10-29 09:07:40 +08:00
132 lines
3.0 KiB
Go
Executable File
132 lines
3.0 KiB
Go
Executable File
// Code generated by go-enum
|
|
// DO NOT EDIT!
|
|
|
|
package example
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
// ModelToyota is a Model of type Toyota
|
|
ModelToyota Model = iota
|
|
// Skipped value
|
|
_
|
|
// ModelChevy is a Model of type Chevy
|
|
ModelChevy
|
|
// Skipped value
|
|
_
|
|
// ModelFord is a Model of type Ford
|
|
ModelFord
|
|
// Skipped value
|
|
_
|
|
// ModelTesla is a Model of type Tesla
|
|
ModelTesla
|
|
// Skipped value
|
|
_
|
|
// ModelHyundai is a Model of type Hyundai
|
|
ModelHyundai
|
|
// Skipped value
|
|
_
|
|
// ModelNissan is a Model of type Nissan
|
|
ModelNissan
|
|
// Skipped value
|
|
_
|
|
// ModelJaguar is a Model of type Jaguar
|
|
ModelJaguar
|
|
// Skipped value
|
|
_
|
|
// ModelAudi is a Model of type Audi
|
|
ModelAudi
|
|
// Skipped value
|
|
_
|
|
// ModelBMW is a Model of type BMW
|
|
ModelBMW
|
|
// Skipped value
|
|
_
|
|
// ModelMercedes is a Model of type Mercedes
|
|
ModelMercedes
|
|
// Skipped value
|
|
_
|
|
// ModelVolkswagon is a Model of type Volkswagon
|
|
ModelVolkswagon
|
|
)
|
|
|
|
const _ModelName = "ToyotaChevyFordTeslaHyundaiNissanJaguarAudiBMWMercedesVolkswagon"
|
|
|
|
var _ModelMap = map[Model]string{
|
|
0: _ModelName[0:6],
|
|
2: _ModelName[6:11],
|
|
4: _ModelName[11:15],
|
|
6: _ModelName[15:20],
|
|
8: _ModelName[20:27],
|
|
10: _ModelName[27:33],
|
|
12: _ModelName[33:39],
|
|
14: _ModelName[39:43],
|
|
16: _ModelName[43:46],
|
|
18: _ModelName[46:54],
|
|
20: _ModelName[54:64],
|
|
}
|
|
|
|
func (i Model) String() string {
|
|
if str, ok := _ModelMap[i]; ok {
|
|
return str
|
|
}
|
|
return fmt.Sprintf("Model(%d)", i)
|
|
}
|
|
|
|
var _ModelValue = map[string]Model{
|
|
_ModelName[0:6]: 0,
|
|
strings.ToLower(_ModelName[0:6]): 0,
|
|
_ModelName[6:11]: 2,
|
|
strings.ToLower(_ModelName[6:11]): 2,
|
|
_ModelName[11:15]: 4,
|
|
strings.ToLower(_ModelName[11:15]): 4,
|
|
_ModelName[15:20]: 6,
|
|
strings.ToLower(_ModelName[15:20]): 6,
|
|
_ModelName[20:27]: 8,
|
|
strings.ToLower(_ModelName[20:27]): 8,
|
|
_ModelName[27:33]: 10,
|
|
strings.ToLower(_ModelName[27:33]): 10,
|
|
_ModelName[33:39]: 12,
|
|
strings.ToLower(_ModelName[33:39]): 12,
|
|
_ModelName[39:43]: 14,
|
|
strings.ToLower(_ModelName[39:43]): 14,
|
|
_ModelName[43:46]: 16,
|
|
strings.ToLower(_ModelName[43:46]): 16,
|
|
_ModelName[46:54]: 18,
|
|
strings.ToLower(_ModelName[46:54]): 18,
|
|
_ModelName[54:64]: 20,
|
|
strings.ToLower(_ModelName[54:64]): 20,
|
|
}
|
|
|
|
// ParseModel attempts to convert a string to a Model
|
|
func ParseModel(name string) (Model, error) {
|
|
if x, ok := _ModelValue[name]; ok {
|
|
return Model(x), nil
|
|
}
|
|
if strings.HasPrefix(name, `Model(`) {
|
|
// Do something cool here
|
|
xName := strings.TrimSuffix(strings.TrimPrefix(name, `Model(`), `)`)
|
|
x, err := strconv.Atoi(xName)
|
|
return Model(int32(x)), err
|
|
}
|
|
return Model(0), fmt.Errorf("%s is not a valid Model", name)
|
|
}
|
|
|
|
func (x *Model) MarshalText() ([]byte, error) {
|
|
return []byte(x.String()), nil
|
|
}
|
|
|
|
func (x *Model) UnmarshalText(text []byte) error {
|
|
name := string(text)
|
|
tmp, err := ParseModel(name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
*x = tmp
|
|
return nil
|
|
}
|