Я бы хотел послать указатель на канал по каналу. Возможно ли это в Go? Как определить функцию, которая принимает такой канал?Отправить канал через канал с помощью Go
Я пробовал:
func test() (chan *chan)
func test() (chan chan)
Я бы хотел послать указатель на канал по каналу. Возможно ли это в Go? Как определить функцию, которая принимает такой канал?Отправить канал через канал с помощью Go
Я пробовал:
func test() (chan *chan)
func test() (chan chan)
Существует всегда некоторый тип, связанный с каналом. Предположим, что тип T
. Канал Т является:
chan T
Указатель на канале Т:
*chan T
канал указателя на канале Т:
chan *chan T
Функция, принимающей на канал указателя на канал Т:
func f(c chan *chan T) { }
Поскольку каналы являются ссылочными типами, вам, вероятно, не нужно использовать указатель. Попробуйте использовать
func (f c chan chan T) { }
Вы действительно не нужен указатель .. каналы сами, что вы могли бы назвать «ссылочные типы» в Go. Они не такие же легкие, как указатель, но они имеют небольшой вес как срез. –
Посылка каналов по каналам называется «мобильными каналами» в некоторых кругах. Он подчиняется PI Calculus Милнера (http://en.wikipedia.org/wiki/%CE%A0-calculus). –