Я экспериментирую с процедурами го.
У меня есть функция подпрограммы go, выполненная x раз, и я хочу дождаться продолжения всех этих подпрограмм в моей основной функции. Я пытаюсь использовать Чан для барьера.
Я попробовал что-то подобное:
func goroutine(i int, ch []chan bool) {
//do stuff
ch[i] <- true
}
func main() {
var ch []chan bool
for i := 0; i < nb; i++ {
ch[i] = make(chan bool)
go goroutine(i, ch)
}
// wait to continue
for i := 0; i < nb; i++ {
<- ch[i]
}
}
У меня следующая ошибка: panic: runtime error: index out of range
для строки ch[i] = make(chan bool)
Первый вопрос:
- хорошее решение для использования чана?
Второй вопрос:
- Почему этот индекс выходит за пределы допустимого диапазона?