// skip | |
// Copyright 2019 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
package main | |
import ( | |
"fmt" | |
"time" | |
) | |
func main() { | |
// Make a big map. | |
m := map[int]int{} | |
for i := 0; i < 100000; i++ { | |
m[i] = i | |
} | |
c := make(chan string) | |
go func() { | |
// Print the map. | |
s := fmt.Sprintln(m) | |
c <- s | |
}() | |
go func() { | |
time.Sleep(1 * time.Millisecond) | |
// Add an extra item to the map while iterating. | |
m[-1] = -1 | |
c <- "" | |
}() | |
<-c | |
<-c | |
} |