2015-03-17 4 views
2

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

Я пробовал:

func test() (chan *chan) 
func test() (chan chan) 
+2

Вы действительно не нужен указатель .. каналы сами, что вы могли бы назвать «ссылочные типы» в Go. Они не такие же легкие, как указатель, но они имеют небольшой вес как срез. –

+0

Посылка каналов по каналам называется «мобильными каналами» в некоторых кругах. Он подчиняется PI Calculus Милнера (http://en.wikipedia.org/wiki/%CE%A0-calculus). –

ответ

8

Существует всегда некоторый тип, связанный с каналом. Предположим, что тип T. Канал Т является:

chan T 

Указатель на канале Т:

*chan T 

канал указателя на канале Т:

chan *chan T 

Функция, принимающей на канал указателя на канал Т:

func f(c chan *chan T) { } 

Поскольку каналы являются ссылочными типами, вам, вероятно, не нужно использовать указатель. Попробуйте использовать

func (f c chan chan T) { } 

playground example

Смежные вопросы