Назад к вопросам
Senior
7
Что Go-конвенция говорит про использование WaitGroup и возвращаемые типы (принимаем интерфейсы, возвращаем конкретные типы)?
Компании, где спрашивали
Cloud.ru
Ответ от нейросети
sobes.tech AI
Go-конвенции рекомендуют принимать в функциях интерфейсы, чтобы обеспечить гибкость и возможность подмены реализаций, а возвращать конкретные типы — для простоты использования и предсказуемости.
В контексте WaitGroup это означает, что обычно вы создаёте и управляете конкретным типом sync.WaitGroup, а не интерфейсом, так как он имеет конкретный набор методов и не требует абстракции.
Пример:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// работа
}()
wg.Wait()
Здесь мы используем конкретный тип sync.WaitGroup, а не интерфейс, так как это проще и соответствует идиоматике Go.