Sobes.tech
Junior — Middle

Czy mógłbyś podać przykłady przypadków, gdy w programowaniu używa się interfejsów?

sobes.tech AI

Odpowiedź od AI

W języku Go interfejsy służą do określenia zachowań, które muszą zaimplementować typy, bez wskazywania konkretnej implementacji. Pozwala to na tworzenie elastycznych i rozszerzalnych programów.

Przykłady użycia interfejsów:

  • Polimorfizm: różne typy implementują ten sam interfejs i mogą być używane zamiennie.

  • Abstrakcja: ukrywanie szczegółów implementacji, na przykład interfejs io.Reader opisuje metodę Read, a różne źródła danych (pliki, sieci) implementują ją na swój sposób.

  • Testowanie: można tworzyć mocki implementujące interfejsy, aby zastąpić rzeczywiste zależności.

  • Obsługa błędów i zdarzeń: interfejsy pozwalają na zdefiniowanie obsługi z różną logiką.

Przykład:

package main
import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct{}
func (d Dog) Speak() string {
    return "Hau"
}

type Cat struct{}
func (c Cat) Speak() string {
    return "Miau"
}

func makeSpeak(s Speaker) {
    fmt.Println(s.Speak())
}

func main() {
    d := Dog{}
    c := Cat{}
    makeSpeak(d) // Hau
    makeSpeak(c) // Miau
}

W ten sposób, interfejsy w Go pozwalają pisać bardziej uniwersalny i łatwy w utrzymaniu kod.