Sobes.tech
Junior — Middle

Qual é a relação entre uma interface vazia e uma interface comum na programação?

sobes.tech IA

Resposta da IA

Em Go, a interface vazia interface{} é uma interface que não contém nenhum método. Pode armazenar um valor de qualquer tipo, pois todos os tipos implementam por padrão a interface vazia. Uma interface normal, por outro lado, define um conjunto de métodos que um tipo deve implementar para corresponder a essa interface.

Assim, a relação entre a interface vazia e a interface normal em Go é que a interface vazia é um contêiner universal para valores de qualquer tipo, enquanto a interface normal define um contrato que tipos específicos devem cumprir. A interface vazia é frequentemente usada para armazenar e transmitir dados sem um tipo específico, enquanto as interfaces normais servem para definir o comportamento dos objetos.

Exemplo:

var any interface{} = 42 // a interface vazia pode armazenar qualquer valor

// Interface normal
type Reader interface {
    Read(p []byte) (n int, err error)
}

// Tipo que implementa Reader
type File struct {}
func (f File) Read(p []byte) (int, error) {
    // implementação
    return 0, nil
}

var r Reader = File{} // File implementa a interface Reader