0Pricing
Go Academy · Lezione

Embedding delle interfacce

Comporre interfacce

Embedding delle interfacce è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Comporre le interfacce

Le interfacce possono incorporare altre interfacce, combinando i relativi insiemi di metodi in un contratto più ampio. La libreria standard lo utilizza ovunque.

Sintassi dell'embedding

Inserisca un tipo di interfaccia dentro un'altra interfaccia per includere tutti i suoi metodi.

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 nella pratica

L'esempio classico è io.ReadWriter, definito incorporando io.Reader e io.Writer. Qualsiasi tipo che disponga di entrambi i metodi la soddisfa.

Soddisfare un'interfaccia composta

Un tipo concreto implementa l'interfaccia combinata semplicemente disponendo di tutti i metodi richiesti.

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())
}

Perché comporre le interfacce

Le interfacce piccole sono facili da implementare e testare. Comporle permette di costruire contratti più ampi solo dove servono, mantenendo ogni componente essenziale.

Costruire a partire da componenti piccoli

Definisca interfacce mirate con un solo metodo, poi le combini.

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()
}

Nessun metodo duplicato

Le interfacce incorporate non devono fornire metodi sovrapposti con firme in conflitto; gli insiemi di metodi identici sono consentiti nelle versioni moderne di Go.

Accettare interfacce ristrette

Le funzioni dovrebbero richiedere l'interfaccia più piccola di cui hanno bisogno. Accetti io.Reader, non io.ReadWriteCloser, se deve solo leggere.

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{})
}

La famiglia io

La libreria standard combina Reader, Writer e Closer in ReadCloser, WriteCloser e ReadWriteCloser: una gerarchia pulita di contratti.

Interfacce composte nelle API

Restituisca l'interfaccia più ampia supportata da un valore, ma accetti quella più ristretta utilizzata dalla funzione. In questo modo massimizza sia la flessibilità sia la chiarezza.

Embedding di interfacce e struct

  • L'embedding delle struct promuove campi e metodi per riutilizzare il comportamento
  • L'embedding delle interfacce combina i requisiti dei metodi in un contratto più ampio

Verifica rapida

Verifichi la Sua conoscenza dell'embedding delle interfacce.

Riepilogo

Ha appreso l'embedding delle interfacce.

  • Elencare le interfacce dentro un'altra per unire gli insiemi di metodi
  • Il pacchetto io combina Reader, Writer e Closer
  • Mantenere piccole le interfacce di base e combinarle quando necessario
  • Accettare l'interfaccia più ristretta richiesta da una funzione

Domande Frequenti

La lezione «Embedding delle interfacce» è gratuita?

Sì — il testo completo di «Embedding delle interfacce» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Embedding delle interfacce»?

Comporre interfacce Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Embedding delle interfacce»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Embedding degli struct
  2. Embedding delle interfacce
  3. Promozione dei metodi
  4. Composizione anziché ereditarietà
← Torna a Go Academy