Jak rzucić na alias typu w Go?

Widziećten fragment zabaw.

Odpowiedni kod:

type somethingFuncy func(int) bool

func funcy(i int) bool {
    return i%2 == 0
}

var a interface{} = funcy

func main() {

    _ = a.(func(int) bool)  // Works

    fmt.Println("Awesome -- apparently, literally specifying the func signature works.")

    _ = a.(somethingFuncy)  // Panics

    fmt.Println("Darn -- doesn't get here. But somethingFuncy is the same signature as func(int) bool.")
}

Pierwsze rzutowanie działa, jawnie deklarując typ. Ale drugi rzut panikuje. Czemu? Czy istnieje czysty sposób na rzucenie dłuższego podpisu?

questionAnswers(4)

yourAnswerToTheQuestion