いつも忘れるのでメモ
time.Monthとかtime.Weekdayあたりが参考になる。
Goにはenum的なものがないので代わりに定数とiotaを使う。
(こういう時なんていう表現なのかわらないのだけど)この時int型をwrapした
enum用の型を作成してそいつにメソッドつける感じで対応する。
enum.go
type EnumType int
const (
One EnumType = iota //初期値を0以外にする場合は iota+1とかで調整
Tow
Three
)
//EnumType の文字列表現
var enumTypes = [...]string{
"一",
"二",
"三",
}
//Enum→string
func (e EnumType) String() string { return enumTypes[e]}
//string→Enum こっちは微妙
func ParseEnumType(name string) EnumType {
for i, display := range enumTypes {
if name == display {
return EnumType(i)
}
}
return One
}
//int → Enum は EnumType(int)とかでやるはず