Junior — Middle
Quais são as vantagens e desvantagens de usar interfaces na linguagem Go?
sobes.tech IA
Resposta da IA
As interfaces em Go permitem descrever comportamentos através de um conjunto de métodos sem especificar uma implementação concreta.
Vantagens:
- Flexibilidade: Os tipos implementam automaticamente a interface se tiverem os métodos necessários, sem declaração explícita.
- Facilitam os testes: É fácil substituir implementações para mocks.
- Simplificam a arquitetura: Permitem escrever código mais abstrato e extensível.
Desvantagens:
- Falta de um contrato explícito: Às vezes é difícil saber quais tipos implementam a interface, pois não é declarado explicitamente.
- Podem complicar a depuração: Um uso incorreto das interfaces pode levar a erros em tempo de execução.
Exemplo de interface e implementação:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Woof!"
}
type Cat struct {}
func (c Cat) Speak() string {
return "Meow!"
}
func saySomething(s Speaker) {
fmt.Println(s.Speak())
}
func main() {
dog := Dog{}
cat := Cat{}
saySomething(dog)
saySomething(cat)
}