Sobes.tech
Senior
37

Co mówi konwencja Go na temat używania WaitGroup i typów zwracanych (przyjmując interfejsy, zwracając konkretne typy)?

Firmy, w których zadano pytania
Cloud.ru

Odpowiedź od AI

sobes.tech AI

Go-конвенции рекомендуют принимать в функциях интерфейсы, чтобы обеспечить гибкость и возможность подмены реализаций, а возвращать конкретные типы — для простоты использования и предсказуемости.

В контексте WaitGroup это означает, что обычно вы создаёте и управляете конкретным типом sync.WaitGroup, а не интерфейсом, так как он имеет конкретный набор методов и не требует абстракции.

Пример:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // работа
}()
wg.Wait()

Здесь мы используем конкретный тип sync.WaitGroup, а не интерфейс, так как это проще и соответствует идиоматике Go.