Sobes.tech
Назад к вопросам
Senior
3

Может ли структура в Go реализовать сразу несколько интерфейсов?

Компании, где спрашивали
SberAuto

Ответ от нейросети

sobes.tech AI

Да, в Go структура может реализовывать сразу несколько интерфейсов. В Go реализация интерфейса происходит неявно: если структура содержит все методы интерфейса, она считается его реализацией.

Это значит, что если структура реализует методы нескольких интерфейсов, она автоматически реализует все эти интерфейсы одновременно.

Пример:

package main

import "fmt"

type Reader interface {
    Read() string
}

type Writer interface {
    Write(string)
}

type ReadWriter interface {
    Reader
    Writer
}

type MyStruct struct {
    data string
}

func (m *MyStruct) Read() string {
    return m.data
}

func (m *MyStruct) Write(s string) {
    m.data = s
}

func main() {
    var rw ReadWriter = &MyStruct{}
    rw.Write("Hello")
    fmt.Println(rw.Read()) // Output: Hello
}

Здесь MyStruct реализует интерфейсы Reader и Writer, а значит и ReadWriter.