タイトルの通りです。
以下のようにint
型のFooType
とBarType
を宣言して、それぞれ60をenumで持つ値をチェックしてみます
package main import "fmt" type FooType int type BarType int const ( Hoge FooType = 60 Nyan FooType = 61 Baz BarType = 60 ) var someTypes = []interface{}{ Hoge, Baz, } func main() { for _, t := range someTypes { if t == Baz { fmt.Println("same") } else { fmt.Println("difference") } } if Baz == 60 { fmt.Println("Baz is 60") } else { fmt.Println("Baz is not 60") } }
出力
difference (`Hoge != Baz`) same (`Baz == Baz`) Baz is 60
ということでenumに設定した数値をリテラルで比較するとその値として出てくるけれど、enumで同様の値を持つ別の型の値と比較した場合は違う扱いになります。