Sobes.tech
Junior — Senior

Синхронизация goroutine через sync.WaitGroup

livecode

Task condition

package main

import (
    "fmt"
    "sync"
    "time"
)

func main() {
    data := make(map[int]bool)
    var wg sync.WaitGroup

    wg.Add(3) // добавляем три горутины
    go func() {
        defer wg.Done()
        data[1] = true
    }()
    go func() {
        defer wg.Done()
        data[1] = true
    }()
    go func() {
        defer wg.Done()
        data[1] = false
    }()

    wg.Wait() // ожидаем завершения всех горутин
    fmt.Printf("%v", data[1])
}