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.