Sobes.tech
Back to questions
Junior — Middle
85

Можете объяснить, что подразумевается под интерфейсами в языке Go и как они работают?

Companies where asked
КуперКупер

Answer from AI

sobes.tech AI

В Go интерфейс — это набор методов, которые должен реализовать тип, чтобы считаться соответствующим этому интерфейсу. Интерфейсы позволяют описывать поведение без указания конкретной реализации, что способствует полиморфизму.

Особенности интерфейсов в Go:

  • Неявная реализация: тип считается реализующим интерфейс, если у него есть все методы интерфейса, без явного указания.
  • Интерфейс может содержать один или несколько методов.
  • Переменная интерфейсного типа может хранить значение любого типа, реализующего этот интерфейс.

Пример:

package main
import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct{}
func (d Dog) Speak() string {
    return "Гав"
}

type Cat struct{}
func (c Cat) Speak() string {
    return "Мяу"
}

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

func main() {
    d := Dog{}
    c := Cat{}
    saySomething(d) // Выведет: Гав
    saySomething(c) // Выведет: Мяу
}

Таким образом, интерфейсы позволяют писать гибкий и расширяемый код, оперируя абстракциями, а не конкретными типами.