教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang面试经之channel之one

golang面试经之channel之one

发布时间:2022-02-06   编辑:jiaochengji.com
教程集为您提供golang面试经之channel之one等资源,欢迎您收藏本站,我们将为您提供最新的golang面试经之channel之one资源

下面一段代码 `len(m)` 不一定会打印为 10,为什么?。如果想要 `len(m)` 打印为 10,应该怎么修改代码?

 

<pre><code class="language-Go">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)) }</code></pre>

 

答案:

<pre><code>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)) }</code></pre>

 

到此这篇关于“golang面试经之channel之one”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang面试经之channel之one
Go并发编程——channel
golang channel的使用以及调度原理
go语言并发编程
【文末有惊喜!】一文读懂golang channel
Golang精编面试题 -- 选择题
go channel 缓冲区最大限制_Golang 入门 : channel(通道)
golang 切片截取 内存泄露_怎么看待Goroutine 泄露
Golang 中的 Goroutine 调度原理与 Chanel 通信
图解Go的channel底层原理

[关闭]
~ ~