У буфера каналов ограничение в размер int, но под буфер аллокации происходят, поэтому max int, конечно, лучше не использовать, но 10 тысяч это немного. Это достаточно общий паттерн, его реализовать можно по-разному, например просто цикл на твои десять тысяч ссылок запустить и с помощью одного канала в n буфер контролировать кол-во одновременных горутин, вот грубый набросок:
maxGoroutines := 10
limit := make(chan struct{}, maxGoroutines)
links := []string{"123",...}
for _, link := range links {
limit <- struct{}{} // блокировка, пока нет "свободного" места для нового обработчика
go func(l string) {
worker(l) // твой парсер, если результат нужен - можешь возвращать его в другой канал с буфером 10 тоже и т.д.
<-limit
}(link)
}
Павел Грязнов, ну если не так важно, то без разницы. ИМХО понятнее с добавлением года, объяснить решение все равно желательно в комментарии, но хоть кода меньше будет. Но дело ваше, разница не сильно большая.
Павел Грязнов, мне кажется это более костыльно, чем добавить год) Плюс по производительности AddDate() лучше, чем дополнительный парсинг даты с нуля (не говоря о лишней аллокации zTime).