considere o seguinte código:
package main import "fmt" type somethingFuncy func(int) bool func funcy(i int) bool { return i%2 == 0 } func main() { var a interface{} = funcy _ = 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.") }
A primeira asserção de tipo funciona ao declarar explicitamente o tipo como func (int) bool. No entanto, o segundo usando o alias de tipo SOMODFUNCY PANICS. Portanto, o alias de tipo algofuncy, apesar de compartilhar a mesma assinatura que o func (int) bool, é considerado um tipo distinto. var a interface {} = FUNY Switch V: = a. (Tipo) { caso func (int) bool: // Tipo afirmado com sucesso como func (int) bool caso algofuncy: // Tipo afirmado com sucesso como algo que Funcy padrão: // A afirmação do tipo falhou } }
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3