"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Razões para a falha do tipo de alias

Razões para a falha do tipo de alias

Postado em 2025-04-12
Navegar:495

Why Does Go's Type Assertion Fail with Type Aliases?

Como fundir para um pseudônimo de tipo em go?

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 } }

Esta comparação falha ao usar o alias de tipo porque requer um tipo exato de match.

Tutorial mais recente Mais>

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