Incorporação de interfaces
Componha interfaces
Incorporação de interfaces é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
Componha interfaces
Interfaces podem incorporar outras interfaces, combinando seus conjuntos de métodos em um contrato maior. A biblioteca padrão usa isso em toda parte.
Sintaxe de incorporação
Liste um tipo de interface dentro de outra interface para incluir todos os seus métodos.
package main
import "fmt"
type Reader interface{ Read() string }
type Writer interface{ Write(s string) }
type ReadWriter interface {
Reader
Writer
}
func main() {
var rw ReadWriter
fmt.Println(rw == nil)
}io.ReadWriter na prática
O exemplo clássico é io.ReadWriter, definido pela incorporação de io.Reader e io.Writer. Qualquer tipo com ambos os métodos a satisfaz.
Satisfazendo uma interface composta
Um tipo concreto implementa a interface combinada simplesmente possuindo todos os métodos exigidos.
package main
import "fmt"
type Reader interface{ Read() string }
type Writer interface{ Write(s string) }
type ReadWriter interface {
Reader
Writer
}
type File struct{ data string }
func (f *File) Read() string { return f.data }
func (f *File) Write(s string) { f.data = s }
func main() {
var rw ReadWriter = &File{}
rw.Write("hi")
fmt.Println(rw.Read())
}Por que compor interfaces
Interfaces pequenas são fáceis de implementar e testar. Combiná-las cria contratos maiores somente quando necessário, mantendo cada parte mínima.
Construindo a partir de partes pequenas
Defina interfaces focadas de método único e depois combine-as.
package main
import "fmt"
type Opener interface{ Open() }
type Closer interface{ Close() }
type OpenCloser interface {
Opener
Closer
}
type Door struct{}
func (Door) Open() { fmt.Println("opened") }
func (Door) Close() { fmt.Println("closed") }
func main() {
var oc OpenCloser = Door{}
oc.Open()
oc.Close()
}Sem métodos duplicados
Interfaces incorporadas não podem contribuir com métodos sobrepostos que tenham assinaturas conflitantes; conjuntos de métodos idênticos são aceitos nas versões modernas de Go.
Aceitando interfaces restritas
As funções devem solicitar a menor interface de que precisam. Use io.Reader, não io.ReadWriteCloser, se você apenas fizer leituras.
package main
import "fmt"
type Reader interface{ Read() string }
func dump(r Reader) { fmt.Println(r.Read()) }
type Buf struct{}
func (Buf) Read() string { return "data" }
func main() {
dump(Buf{})
}A família io
A biblioteca padrão combina Reader, Writer e Closer em ReadCloser, WriteCloser e ReadWriteCloser — uma hierarquia organizada de contratos.
Interfaces compostas em APIs
Retorne a interface mais abrangente que um valor oferece, mas aceite a interface mais restrita usada pela sua função. Isso maximiza tanto a flexibilidade quanto a clareza.
Incorporação de interfaces versus estruturas
- A incorporação de estruturas promove campos e métodos para reutilizar comportamentos
- A incorporação de interfaces combina requisitos de métodos em um contrato maior
Verificação rápida
Teste seus conhecimentos sobre incorporação de interfaces.
Recapitulação
Você aprendeu a incorporação de interfaces.
- Liste interfaces dentro de outra para mesclar conjuntos de métodos
- O pacote io combina Reader, Writer e Closer
- Mantenha as interfaces básicas pequenas; combine-as quando necessário
- Aceite a interface mais restrita exigida por uma função
Perguntas Frequentes
A aula “Incorporação de interfaces” é grátis?
Sim — o texto completo de “Incorporação de interfaces” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Incorporação de interfaces”?
Componha interfaces Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Incorporação de interfaces”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Incorporação de structs
- Incorporação de interfaces
- Promoção de métodos
- Composição em vez de herança