English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base Golang

Istruzioni di controllo Golang

Funzioni & Metodi Golang

Strutture Golang

Tagli & Array Golang

Stringhe (String) Golang

Puntatori Golang

Interfacce Golang

Concetti di concorrenza Golang

Eccezioni Golang (Error)

Altri argomenti Golang

Interfaccia multipla del linguaggio Go

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.