Мне интересно, почему провал не разрешен в выражении оператора типа в golang.
В соответствии с спецификацией: "Операция" проскальзывание "не допускается при переключении типа.", что мало объясняет, почему нет допускается.
Приведенный код заключается в том, чтобы имитировать возможный сценарий, поскольку прохождение в инструкции типа switch могло бы быть полезным.
Обратите внимание! Этот код не работает, он выдает ошибку: "не может пройти через переключатель типа". Мне просто интересно, какие возможные причины могут быть связаны с тем, что вы не допустили утверждение fallthrough в переключателе типа.
//A type switch question
package main
import "fmt"
//Why isn't fallthrough in type switch allowed?
func main() {
//Empty interface
var x interface{}
x = //A int, float64, bool or string value
switch i := x.(type) {
case int:
fmt.Println(i + 1)
case float64:
fmt.Println(i + 2.0)
case bool:
fallthrough
case string:
fmt.Printf("%v", i)
default:
fmt.Println("Unknown type. Sorry!")
}
}