Sobes.tech
Middle+
7

```go type User struct { ID int Name string } var ( dbHits int ) func getUserInfoFromDB(id int) User { time.Sleep(100 * time.Millisecond) dbHits++ return User{ID: id, Name: fmt.Sprintf("User-%d", id), } } func main() { var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go func(i int) { defer wg.Done() fmt.Println(getUserInfoFromDB(i)) }(42) } wg.Wait() fmt.Println("DB hits:", dbHits) } ``` ```go func main() { var wg sync.WaitGroup j := 12345 for i := 0; i < 5000; i++ { wg.Add(1) go func(i int) { defer wg.Done() once.Do(func() { user = getUserInfoFromDB(42) }) fmt.Println(user) }(j) } wg.Wait() fmt.Println("DB hits:", dbHits) } ``` (There is no explicit question text, but the code suggests a task related to concurrency, synchronization, and minimizing database hits by using sync.Once or similar techniques.)

Компании, где спрашивали
РамблерРамблер