golang Однонаправленные на уровне создания и инициллизации make() каналы - Зачем они нужны

Каналы, которые действильно созданы как однонаправленные, например:

// Создаём канал только для чтения
ch := make(<-chan int) 

-- на деле могут использовать разве что как моки(заглушки), например:

  1. у вас есть функция, которая хочет на вход именно канал для записи
  2. вам в ходе теста не интересно, что именно запишется в канал - мы хотите протестировать какую-то другую часть поведения

-- при выполнении таких условий, выдействительно можете создать однонаправленный канал, но если всё-таки мы захоте тестировать и запись в него - то уже нужно будет перейти к обычной инициализации типа:

ch := make(chan int) 

Однонаправленность как ограничение доступа

Также отметим, что Go однонаправленность — это не свойство самого объекта в памяти, а способ интерпретации прав доступа к нему.

make() всегда создает полноценный канал, а вот когда вы передаете ее в функцию, вы «сужаете» права доступа, помечая, что эта функция может только читать или только писать.

Key Words for FKN + antitotal forum (CS VSU):