golang append的并发问题

woodane ·
90design
狗狼都是神
不用并发也可以
#1
更多评论
用channel也可以 ```go package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup s := make([]int, 0, 1000) ch := make(chan int, 1000) // add for i := 0; i < 1000; i++ { v := i wg.Add(1) go func() { // s = append(s, v) // delete ch <- v // add wg.Done() }() } wg.Wait() close(ch) // add // add for v := range ch { s = append(s, v) } fmt.Printf("%v\n", len(s)) } ```
#2