func ParseAnimal(name string) (Animal, error) {
	if x, ok := _AnimalValue[name]; ok {
		return x, nil
	}
	return Animal(0), fmt.Errorf("%s is not a valid Animal", name)
}
ParseAnimal attempts to convert a string to a Animal
package example
import (
	"fmt"
)
const (
	AnimalCat Animal = iota
	AnimalDog
	AnimalFish
	AnimalFishPlusPlus
	AnimalFishSharp
)
const _AnimalName = "CatDogFishFish++Fish#"
var _AnimalMap = map[Animal]string{
	0: _AnimalName[0:3],
	1: _AnimalName[3:6],
	2: _AnimalName[6:10],
	3: _AnimalName[10:16],
	4: _AnimalName[16:21],
}
func (x Animal) String() string {
	if str, ok := _AnimalMap[x]; ok {
		return str
	}
	return fmt.Sprintf("Animal(%d)", x)
}
var _AnimalValue = map[string]Animal{
	_AnimalName[0:3]:   0,
	_AnimalName[3:6]:   1,
	_AnimalName[6:10]:  2,
	_AnimalName[10:16]: 3,
	_AnimalName[16:21]: 4,
}