goroutineが動いた数をカウントしたいです
func main() { var mutex = &sync.Mutex{} var wg sync.WaitGroup var numbers = [100]int{} copiedNumbers := []int{} for i := range numbers { wg.Add(1) go func(i int) { mutex.Lock() copiedNumbers = append(copiedNumbers, i) mutex.Unlock() wg.Done() }(i) } wg.Wait() fmt.Println(len(copiedNumbers)) fmt.Println(copiedNumbers) }
のgo func部分を下記のコードのように別関数にしたいのですがどのようにすれば良いのでしょうか?
go fun内でappendに追加したものはチャネルでなくreturnでは返せないので良いのでしょうか?
func main() { var mutex = &sync.Mutex{} var wg sync.WaitGroup var numbers = [100]int{} copiedNumbers := []int{} for i := range numbers { wg.Add(1) pro(i,&copiedNumbers,&wg) } wg.Wait() fmt.Println(len(copiedNumbers)) fmt.Println(copiedNumbers) } func pro(i int, copiedNumbers *[]int, wg *sync.WaitGroup) { go func(i int) { mutex.Lock() fmt.Println(i) //go funcの中でスライスに追加しmain関数でlenで呼びたいです copiedNumbers = append(copiedNumbers, i) mutex.Unlock() wg.Done() }(i) }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/21 00:55 編集
退会済みユーザー
2020/01/21 11:06