Golang实现java枚举功能

440 阅读1分钟

#+ Go语言现阶段没有枚举类型,但是可以使用 const 常量配合上一节《Go语言常量》中介绍的 iota 来模拟枚举类型,请看下面的代码:

package seller  
  
import (  
"fmt"  
"testing"  
)  
  
type Region int  
  
const (  
NA Region = iota  
EU  
FE  
)  
  
var Region_Name = map[string]int{  
"NA": 0,  
"EU": 1,  
"FE": 2,  
}  
  
func (region Region) String() string {  
switch region {  
case NA:  
return "NA"  
case EU:  
return "EU"  
case FE:  
return "FE"  
}  
return "NONE"  
}  
  
func TestEnum(t *testing.T) {  
//字符串转枚举  
str := "NA"  
regionInt := Region_Name[str]  
//枚举对象  
region := Region(regionInt)  
fmt.Printf("%v \n", region)  
  
//对象转字符串  
s := region.String()  
naStr := NA.String()  
fmt.Printf("%v %v \n", s, naStr)  
}