Sobes.tech
Junior — Middle

Qual è la differenza tra una struttura senza metodi e un'interfaccia in un linguaggio di programmazione?

sobes.tech AI

Risposta dell'AI

In Go, una struct è un tipo di dato concreto che contiene un insieme di campi (variabili). Descrive come sono organizzati i dati, ma di per sé non contiene comportamento.

L'interfaccia (interface) in Go descrive un insieme di metodi che un tipo deve implementare per soddisfare questa interfaccia. L'interfaccia non contiene dati, solo le firme dei metodi.

Differenze principali:

  • Struct: è un'implementazione concreta con campi.
  • Interfaccia: un'astrazione che descrive il comportamento attraverso metodi.
  • Una struct può implementare una o più interfacce se ha i metodi appropriati.

Esempio:

// Struct senza metodi
type User struct {
    Name string
    Age  int
}

// Interfaccia con metodo
type Greeter interface {
    Greet() string
}

// Implementazione dell'interfaccia
func (u User) Greet() string {
    return "Hello, " + u.Name
}

Qui, User è una struct con campi, e Greeter è un'interfaccia che descrive il comportamento. Senza il metodo Greet, la struct User non implementa l'interfaccia Greeter.