Menu
CoddyTech

Definire un’interfaccia

Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 13 di 68.

Ora che hai capito cosa sono concettualmente le interfacce, impariamo a definirne una concretamente in Go. Un'interfaccia si definisce usando la parola chiave interface, seguita da un insieme di firme di metodi racchiuse tra parentesi graffe.

Ecco la sintassi di base per definire un'interfaccia:

type InterfaceName interface {
    MethodName() ReturnType
    AnotherMethod(parameter Type) ReturnType
}

Nota che un'interfaccia contiene solo le firme dei metodi: il nome del metodo, i parametri e i tipi restituiti, ma nessuna implementazione. L'interfaccia non specifica come dovrebbero funzionare questi metodi, ma solo quali metodi devono esistere.

Per esempio, ecco come definiresti una semplice interfaccia Shaper che richiede a qualsiasi tipo che la implementi di avere un metodo Area:

type Shaper interface {
    Area() float64
}

Questa interfaccia stabilisce un contratto: qualsiasi tipo che voglia essere considerato un Shaper deve avere un metodo Area che non accetta parametri e restituisce un float64. All'interfaccia non importa quale sia il tipo o come calcoli l'area: le importa solo che il metodo esista con la firma corretta.

challenge icon

Sfida

Facile

In questa sfida, ti eserciterai a definire le interfacce in Go creando un semplice sistema di riproduzione multimediale. Definirai un'interfaccia che stabilisce un contratto per diversi tipi di dispositivi multimediali.

Riceverai un input:

  • Una stringa che rappresenta un'azione multimediale (ad es. "play", "pause" o "stop")

Il tuo compito è:

  1. Definire un'interfaccia chiamata MediaPlayer con tre firme di metodo:
    • Play() che restituisce una stringa
    • Pause() che restituisce una stringa
    • Stop() che restituisce una stringa
  2. In base all'azione di input, stampare la firma del metodo corrispondente della tua interfaccia MediaPlayer nel formato: "MediaPlayer interface requires: [MethodName]() string"

Questo programma non usa ancora MediaPlayer, e va bene così: Go compila un'interfaccia anche quando nessun tipo la implementa. Le istruzioni di stampa si limitano a riportare la firma del metodo richiesta dalla tua interfaccia per l'azione specificata. Nella prossima lezione creerai un tipo che implementa MediaPlayer e ne chiamerai i metodi.

I nomi dei metodi devono iniziare con una maiuscola (essere esportati), perché fanno parte della definizione di un'interfaccia. Per l'input "play", stampa "MediaPlayer interface requires: Play() string"; per "pause" stampa "MediaPlayer interface requires: Pause() string" e per "stop" stampa "MediaPlayer interface requires: Stop() string".

Questa sfida si concentra sul concetto fondamentale di definire interfacce con firme di metodo, stabilendo il contratto che qualsiasi tipo che la implementa deve rispettare.

Provalo tu

package main

import "fmt"

func main() {
    // Leggi l'input
    var action string
    fmt.Scanln(&action)
    
    // TODO: Definisci qui la tua interfaccia MediaPlayer
    
    // TODO: Scrivi qui sotto il codice per gestire l'azione e stampare l'output richiesto
    
    // Stampa il risultato
    // Ricorda di stampare nel formato: "MediaPlayer interface requires: [MethodName]() string"
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Go online