Slide 14
Slide 14 text
multiple errors
のユースケース
並行処理結果の待ち受け
// https://pkg.go.dev/sync#WaitGroup
の例
func FetchURLs() error {
var wg sync.WaitGroup
var urls = []string{
"http://golang.org/", "http://google.com/", "http://example.com/",
}
var errMu sync.Mutex
var err error
for _, url := range urls {
wg.Add(1)
go func(url string) {
defer wg.Done()
_, fetchErr := http.Get(url)
errMu.Lock()
err = errors.Join(err, fetchErr) // http.Get
で発生した全てのエラーをまとめる
errMu.Unlock()
}(url)
}
wg.Wait()
return err //
まとめたエラーを返す
}