package operation import ( "encoding/json" "errors" "local/sandbox/cards/src/entity" ) type Int func(*entity.Game, interface{}) int64 var intStringified = map[string]Int{ "royalFlush": royalFlush, "straightFlush": straightFlush, "fourOfAKind": fourOfAKind, "fullHouse": fullHouse, "flush": flush, "straight": straight, "threeOfAKind": threeOfAKind, "twoPair": twoPair, "pair": pair, "highCard": highCard, } func (foo *Int) UnmarshalJSON(b []byte) error { var s string if err := json.Unmarshal(b, &s); err != nil { return err } return foo.FromString(s) } func (foo *Int) FromString(s string) error { for k, v := range intStringified { if k == s { *foo = v return nil } } return errors.New("unknown int method " + s) }