Sobes.tech
Junior — Middle

Care este diferența dintre o structură fără metode și o interfață într-un limbaj de programare?

sobes.tech AI

Răspuns de la AI

În Go, o structură (struct) este un tip de date concret care conține un set de câmpuri (variabile). Ea descrie modul în care sunt organizate datele, dar nu conține comportament în sine.

Interfața (interface) în Go descrie un set de metode pe care un tip trebuie să le implementeze pentru a corespunde acestei interfețe. Interfața nu conține date, ci doar semnăturile metodelor.

Diferențele principale:

  • Structură: este o implementare concretă cu câmpuri.
  • Interfață: o abstracție care descrie comportamentul prin metode.
  • O structură poate implementa una sau mai multe interfețe dacă are metodele corespunzătoare.

Exemplu:

// Structură fără metode
type User struct {
    Name string
    Age  int
}

// Interfață cu metodă
type Greeter interface {
    Greet() string
}

// Implementarea interfeței
func (u User) Greet() string {
    return "Hello, " + u.Name
}

Aici, User este o structură cu câmpuri, iar Greeter este o interfață care descrie comportamentul. Fără metoda Greet, structura User nu implementează interfața Greeter.