El siguiente fragmento de código len(m)
no necesariamente va a ser impresa como 10, y por qué? . Si desea len(m)
imprimir es 10, ¿debe modificar el código?
func main() {
const N = 10
m := make(map[int]int)
wg := &sync.WaitGroup{}
mu := &sync.Mutex{}
wg.Add(N)
for i := 0; i < N; i++ {
go func() {
defer wg.Done()
mu.Lock()
m[i] = i
mu.Unlock()
}()
}
wg.Wait()
println(len(m))
}
len(m)
Cuando el rango de 0-9 son probable para o utilizarse en conjunción con los compañeros de rutinas, para pasar a una serie de incertidumbres co-rutina. Añadir a este paso de parámetros función anónima, el resultado fue de 10.
func main() {
const N = 10
m := make(map[int]int)
wg := &sync.WaitGroup{}
mu := &sync.Mutex{}
wg.Add(N)
for i := 0; i < N; i++ {
go func(i int) {
defer wg.Done()
mu.Lock()
m[i] = i
mu.Unlock()
}(i)
}
wg.Wait()
println(len(m))
}