github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgType/StringEnum.go (about)

     1  package kmgType
     2  
     3  import (
     4  	"fmt"
     5  	"reflect"
     6  )
     7  
     8  type StringEnum interface {
     9  	GetEnumList() []string //GetEnumList get all list of this type enum ,should only depend on type
    10  }
    11  
    12  func IsEnumExist(enum StringEnum) bool {
    13  	v := reflect.ValueOf(enum)
    14  	if v.Kind() != reflect.String {
    15  		panic(fmt.Errorf("[IsEnumExist] you should pass in a type which underlying type is string ,Get:%s", v.Kind()))
    16  	}
    17  	return IsEnumExistString(enum, v.String())
    18  }
    19  
    20  func IsEnumExistString(enum StringEnum, s string) bool {
    21  	for _, enumItem := range enum.GetEnumList() {
    22  		if s == enumItem {
    23  			return true
    24  		}
    25  	}
    26  	return false
    27  }