Go の enum の話

Go には enum という概念がありません。
従って、enum のようなものを定義したい場合には別の方法で代替を行う必要があるのですが、どうやら iota というもので代用するのが一般的とされているようです。
例えばこんな感じ。
https://blog.y-yuki.net/entry/2017/05/09/000000

enumで列挙するものを 0 からの連番にするという発想はまだわからなくもないですが、これの欠点は、実際に enum で指定可能な値を表示したりすると、訳のわからない数値が表示されることになることですよね。
その対策として、Stringer インターフェースを実装したりするわけですが、たかだか enum 的なものを定義したいだけなのに、なんでこんな手間なことをするのだろう、、、と普通に思うわけです。

と言ったわけで世の中の人達はどう考えているのかを見て回ってみたのですが、、、下記の考え方が自分的にはいいと思いました。
https://qiita.com/kyoh86/items/18b8bfc6ffe045aaf380

単純に下記のように const で定義する感じですね。

type Color string

const (
    Black    = Color("Black")
    Red      = Color("Red")
    Blue     = Color("Blue")
    Green    = Color("Green")
...

これで不都合なことってあるんですかね??
個人的には今のところ問題になったことはないので、enum は今後もこれで対応していこうかなと思っています。

コメント

タイトルとURLをコピーしました