@Attis

Интерфейсы в Go. Как создать канал типа Интерфейса?

Наткнулся я на эту статью на хабре, где идет речь о интерфейсах, и захотел воспроизвести один из примеров со статьи который находится в разделе "Как перестать абьюзить интерфейсы и начать жить".

Вот мой код:

package main

import (
	"fmt"
)

type (
	MyInt    int
	MyString string
)

type Printerer interface {
	Pr()
}

func (mi MyInt) Pr() {
	fmt.Println("I have MyInt INT: ", mi)
}

func (ms MyString) Pr() {
	fmt.Println("I have MyString STRING: ", ms)
}

func Display(ch chan Printerer) {
	for v := range ch {
		v.Pr()
	}
}

func send(ch chan Printerer) {
	ch <- 0
	ch <- "test"
}

func main() {
	ch := make(chan Printerer)
	go send(ch)
	go Display(ch)
	var i string
	fmt.Scan(&i)
}


Проблема в том что я не могу отправлять какие либо данные в канал потому что он типа Printerer, но в стаье не было полного примера кода чтобы понять в чём проблема.
  • Вопрос задан
  • 300 просмотров
Пригласить эксперта
Ответы на вопрос 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Создайте тип, имплементирующий интерфейс Printerer. Объекты этого вашего типа можно отправлять в канал.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы