美文网首页
Golang笔记:循环里的闭包

Golang笔记:循环里的闭包

作者: 喝姜茶的酒鬼 | 来源:发表于2017-05-27 15:07 被阅读0次

    先来一段之前的错误代码

        package main
        import (
                    "fmt"
                    "sync"
                    )
        func main(){
            var wg sync.WaitGroup
            var names = [2]string{"1", "2"}
            for _, name := range names {
                wg.Add(1)
                go func() {
                        fmt.Println(name)
                        wg.Done()
                }()
            }
            wg.Wait()
        }
    

    这样的打印,打印了两次,但是结果都是

        2
        2
    

    想要起到循环打印的效果,需要以入参的形式传入

        package main
        import (
                    "fmt"
                    "sync"
                    )
        func main(){
            var wg sync.WaitGroup
            var names = [2]string{"1", "2"}
            for _, name := range names {
                wg.Add(1)
                go func(n) {
                        fmt.Println(n)
                        wg.Done()
                }(name)
            }
            wg.Wait()
        }
    

    打印出来为

       2
       1

    相关文章

      网友评论

          本文标题:Golang笔记:循环里的闭包

          本文链接:https://www.haomeiwen.com/subject/mvsqfxtx.html