Имея следующий код
var v interface{}
v = rune(1)
switch v.(type) {
case int32:
fmt.Println("int32")
case rune:
fmt.Println("rune")
}
получаю ошибку компиляции
tmp/sandbox193184648/main.go:14: duplicate case rune in type switch
previous case at tmp/sandbox193184648/main.go:12
Если вместо этого я заверну руну в свой собственный тип, переключатель типа компилируется и работает.
type myrune rune
var v interface{}
v = myrune(1)
switch v.(type) {
case int32:
fmt.Println("int32")
case myrune:
fmt.Println("rune")
}
см. https://play.golang.org/p/2lMRlpCLzX
Это почему? Как отличить руну и int32 в переключателе типов?