Sobes.tech
Senior

Na co jsou vlastně rozhraní? Proč nepoužívat jednoduše struktury?

sobes.tech AI

Odpověď od AI

Rozhraní v jazyce Go jsou nezbytná pro definování chování objektů bez závislosti na konkrétní implementaci. Umožňují psát flexibilnější a rozšiřitelnější kód, podporují polymorfismus a usnadňují testování.

Pokud používáte pouze struktury, kód se stává pevně svázaný s konkrétními typy, což ztěžuje nahrazení implementace nebo psaní mocků pro testy.

Například rozhraní Reader definuje metodu Read, a různé typy (soubory, buffery, síťová spojení) mohou toto rozhraní implementovat, což umožňuje jejich vzájemnou výměnu:

type Reader interface {
    Read(p []byte) (n int, err error)
}

func ReadData(r Reader) {
    buf := make([]byte, 100)
    r.Read(buf)
    // zpracování dat
}

Tímto způsobem rozhraní poskytují abstrakci a slabé propojení kódu.