Menu
Coddy logo textTech

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 come definirne una concretamente in Go. Un'interfaccia si definisce usando la parola chiave interface seguita da un insieme di firme dei 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 debbano funzionare questi metodi, ma solo quali metodi devono esistere.

Ad 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 uno 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 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" oppure "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"

L'istruzione di stampa serve a descrivere l'interfaccia che hai definito sopra. Stai indicando quale firma di metodo richiede l'interfaccia MediaPlayer per l'azione specificata. Immagina che il tuo programma esamini e riporti il proprio contratto d'interfaccia.

I nomi dei metodi devono iniziare con una lettera 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 ogni tipo che le implementa deve soddisfare.

Provalo tu

package main

import "fmt"

func main() {
    // Leggi l'input
    var action string
    fmt.Scanln(&action)
    
    // TODO: Definisci qui l'interfaccia MediaPlayer
    
    // TODO: Scrivi il codice qui sotto 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