O que são interfaces em Go? O que é duck typing?
sobes.tech IA
Resposta da IA
Em Go, as interfaces definem um conjunto de métodos que um tipo deve implementar para ser considerado compatível com essa interface. É importante notar que a implementação de interfaces em Go não requer uma declaração explícita: se um tipo implementa todos os métodos da interface, ele é automaticamente considerado como a implementando.
O duck typing é um conceito segundo o qual o tipo de um objeto é determinado não pela sua declaração explícita, mas pela presença de certos métodos ou propriedades. No contexto de Go, isso significa que se um objeto "quacua como um pato e anda como um pato", então ele é um pato, ou seja, se um tipo implementa os métodos de uma interface, ele se encaixa nessa interface.
Exemplo de interface e implementação em Go:
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() {
d := Dog{}
c := Cat{}
saySomething(d) // Woof!
saySomething(c) // Meow!
}
Aqui, Dog e Cat implementam a interface Speaker sem declararem explicitamente, mas graças à presença do método Speak(). Este é um exemplo de duck typing em Go.