Я запускаю два параллельных пути выполнения (или goroutines) для выполнения двух заданий
const Retries = 10
wg.Add(2)
go func() {
for i := 0; i < Retries; i++ {
retVal1, err1 = doSomeWork()
if err1 != nil {
fmt.Printf("WARNING: Error job in attempt no %d: %s - retrying...\n", i+1, err1)
continue
} else {
break
}
}
if err1 != nil {
log.Fatalf("ERROR job %s\n", err1)
}
wg.Done()
}()
go func() {
for i := 0; i < Retries; i++ {
retVal2, err2 = doSomeWork()
if err2 != nil {
fmt.Printf("WARNING: Error job in attempt no %d: %s - retrying...\n", i+1, err2)
continue
} else {
break
}
}
if err2 != nil {
log.Fatalf("ERROR job %s\n", err2)
}
wg.Done()
}()
wg.Wait()
У меня вопрос (кроме импорта какой-либо сторонней библиотеки повторов), есть ли еще go -idiomati c способ структурирования приведенного выше кода? Будет ли подход канала / выбора больше go -centri c?