<-chan int обратно к chan int?Нет. Направление канала в типах Go нельзя "отменить": из chan int можно присвоить в <-chan int (только чтение) или chan<- int (только запись), но обратное присваивание недопустимо.
Ограничение прав: если функция принимает <-chan int, она гарантированно не сможет закрыть канал и не будет писать в него. Приведение к chan int нарушило бы эту гарантию и потребовало бы небезопасного обхода типа (например, через unsafe или пакет reflect), что в обычном коде не делают.
var ch chan int = make(chan int)
var recv <-chan int = ch // OK
var send chan<- int = ch // OK
var ch2 chan int = recv // ошибка компиляции