Как запустить n горутин на golang?

Для запуска n горутин на языке Go вы можете использовать горутину внутри цикла и канал для синхронизации завершения всех горутин. Вот пример кода, который показывает, как это сделать:

package main

import (
	"fmt"
	"sync"
)

func foo(id int, wg *sync.WaitGroup) {
	defer wg.Done() // уменьшаем счетчик WaitGroup при завершении горутины
	fmt.Printf("Горутина %d завершенаn", id)
}

func main() {
	n := 10 // количество горутин, которые нужно запустить
	var wg sync.WaitGroup
	wg.Add(n) // увеличиваем счетчик WaitGroup на n

	for i := 0; i < n; i++ {
		go foo(i, &wg) // запускаем горутину
	}

	wg.Wait() // ожидаем, пока все горутины завершатся
	fmt.Println("Все горутины завершены")
}

В этом примере мы объявляем главную функцию main, в которой создаем WaitGroup - wg, чтобы отслеживать количество запущенных горутин и дожидаться их завершения. Затем мы запускаем цикл по n раз, в каждой итерации вызывая функцию foo с текущим значением i и указателем на wg. Внутри функции foo мы отмечаем, что горутина завершена, с помощью метода Done WaitGroup. В конце главной функции, после цикла, мы вызываем метод Wait WaitGroup, который блокирует выполнение до тех пор, пока все горутины не завершатся. После этого мы выводим сообщение об окончании всех горутин.

Запускать горутины позволяет использование многопоточности и параллельного исполнения кода в Go, что может улучшить производительность вашей программы и сделать ее более отзывчивой.