Sobes.tech
Junior — Middle

Qual é a diferença da interface na linguagem Go em comparação com as interfaces em outras linguagens de programação?

sobes.tech IA

Resposta da IA

Na linguagem Go, as interfaces diferem por serem implícitas — o tipo não precisa indicar explicitamente que implementa a interface. Se um tipo contém todos os métodos da interface, ele é automaticamente considerado como a implementando.

Isto difere de muitas outras linguagens, onde é necessário declarar explicitamente que uma classe ou tipo implementa uma interface.

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 do método
    return 0, nil
}

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