English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In Go, un'interfaccia è un insieme di firme dei metodi, è anche un tipo, il che significa che è possibile creare variabili di tipo interfaccia. In Go, è possibile creare più interfacce utilizzando la sintassi fornita nel programma:
type interface_name interface{ //Firma del metodo }
Attenzione:In Go non è permesso creare metodi con lo stesso nome in due o più interfacce. Se si tenta di farlo, il programma si bloccerà. Vediamo un esempio per discutere il concetto di più interfacce.
//Concetto di più interfacce package main import "fmt" //Interfaccia 1 type AuthorDetails interface { details() } //Interfaccia 2 type AuthorArticles interface { articles() } //Struttura type author struct { a_name string branch string college string year int salary int particles int tarticles int } //Implementazione del metodo dell'interfaccia 1 func (a author) details() {} fmt.Printf("Autore: %s", a.a_name) fmt.Printf("\nCorso: %s, Data: %d", a.branch, a.year) fmt.Printf("\nNome dell'università: %s", a.college) fmt.Printf("\nStipendio: %d", a.salary) fmt.Printf("\nNumero di articoli pubblicati: %d", a.particles) } // Implementazione del metodo dell'interfaccia 2 func (a author) articles() { pendingarticles := a.tarticles - a.particles fmt.Printf("\nArticoli in sospeso: %d", pendingarticles) } // Valore principale func main() { // Assegnamento della struttura values := author{ a_name: "Mickey", branch: "Computer science", college: "XYZ", year: 2012, salary: 50000, particles: 209, tarticles: 309, } // Accesso ai metodi utilizzando l'interfaccia 1 var i1 AuthorDetails = values i1.details() // Accesso ai metodi utilizzando l'interfaccia 2 var i2 AuthorArticles = values i2.articles() }
Output:
Autore: Mickey Corso: Computer science, Data: 2012 Nome dell'università: XYZ Stipendio: 50000 Numero di articoli pubblicati: 209 Articoli in sospeso: 100
Spiegazione dell'uso:Come mostrato nell'esempio, abbiamo due interfacce con metodi, ovvero details() e Articles(). In questo caso, il metodo details() fornisce le informazioni di base dell'autore, mentre il metodo articles() fornisce gli articoli in sospeso dell'autore.
C'è anche una struttura chiamata Autore (Author) che contiene un insieme di variabili, i cui valori vengono utilizzati nell'interfaccia. Nei metodi principali, assegniamo i valori delle variabili esistenti nella struttura dell'autore in modo che possano essere utilizzati nell'interfaccia e creare variabili di tipo interfaccia per accederviAuthorDetailseAuthorArticlesMetodi dell'interfaccia.