Sobes.tech
Junior — Middle

Aký je rozdiel medzi štruktúrou bez metód a rozhraním v programovacom jazyku?

sobes.tech AI

Odpoveď od AI

V jazyku Go je štruktúra (struct) konkrétny dátový typ, ktorý obsahuje súbor polí (premenných). Popisuje, ako sú údaje usporiadané, ale sama o sebe neobsahuje správanie.

Rozhranie (interface) v Go popisuje súbor metód, ktoré musí typ implementovať, aby zodpovedal tomuto rozhraniu. Rozhranie neobsahuje údaje, iba podpisy metód.

Hlavné rozdiely:

  • Štruktúra: je konkrétna implementácia s poľami.
  • Rozhranie: abstrakcia, ktorá popisuje správanie prostredníctvom metód.
  • Štruktúra môže implementovať jedno alebo viac rozhraní, ak má príslušné metódy.

Príklad:

// Štruktúra bez metód
type User struct {
    Name string
    Age  int
}

// Rozhranie s metódou
type Greeter interface {
    Greet() string
}

// Implementácia rozhrania
func (u User) Greet() string {
    return "Hello, " + u.Name
}

Tu je User štruktúra s poľami a Greeter je rozhranie, ktoré popisuje správanie. Bez metódy Greet štruktúra User neimplementuje rozhranie Greeter.