Sobes.tech
Senior

O que são interfaces em Go? Como os tipos implementam interfaces?

sobes.tech IA

Resposta da IA

Em Go, uma interface é um conjunto de métodos que descrevem um comportamento. Um tipo implementa uma interface se contiver todos os métodos declarados na interface, sem necessidade de indicar explicitamente a implementação da interface.

Isto é chamado implementação implícita de interfaces. Graças a isso, é possível escrever um código mais flexível e extensível.

Exemplo:

package main
import "fmt"

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

type File struct {}

func (f File) Read(p []byte) (n int, err error) {
    // implementação de leitura
    return 0, nil
}

func main() {
    var r Reader
    f := File{}
    r = f // File implementa Reader
    fmt.Println(r)
}

Aqui, o tipo File implementa a interface Reader porque possui um método Read com a assinatura necessária.