package main
import "fmt"
func main() {
intCh := make(chan int, 2)
go factorial(5, intCh)
fmt.Println(<-intCh)
fmt.Println("The End")
}
func factorial(n int, ch chan<- int){
result := 1
for i := 1; i <= n; i++{
result *= i
}
ch <- result
}
вот код
функция factorial() принимает n и канал ch, вопрос такой- ch это :
1. небуферизированный канал созданный обьявлением функций факториал который копирует данные intCh // мало вероятно, откуда в intCh будут потом результаты функций factorial()
2. так как intCh и ch разные (первый двухнапрвленный а второй однонаправоенный ), последний точно не копирует первого, может он(канал ch) чтото вроде поинтера(для каналов :D ) для intCh
вообшем как мне понять почему fmt.Println(<-intCh) выдает 120
откуда в канале intCh данные вообше оказались?