cpp

Композиция интерфейсов

Интерфейсы, так же как и структуры, поддерживают композицию. Если вместо сигнатуры метода указать название интерфейса, то все методы этого базового интерфейса станут методами производного интерфейса. Если посмотреть на объявление интерфейса MyInterface из листинга 11.10, то можно заметить объявление метода String():

type MyInterface interface {
   Show()
   String() string
}

Этот метод является частью интерфейса fmt.Stringer:

type Stringer interface {
   String() string
}

Поэтому вместо сигнатуры метода String() мы можем указать название интерфейса fmt.Stringer:

type MyInterface interface {
   Show()
   fmt.Stringer
}

Объявление интерфейса может содержать только названия интерфейсов. Примером такого интерфейса является стандартный интерфейс io.ReadWriter:

type ReadWriter interface {
   Reader
   Writer
}

Объявления интерфейсов io.Reader и io.Writer:

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

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp