golang中使用go时出现的的问题

来源:互联网 发布:加密软件破译系统 编辑:程序博客网 时间:2024/06/07 10:09

方式一:此时协程中打印的数字始终是相同的

func main(){

    m := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    for _, p := range m {
        fmt.Printf("当前数字[%d]\n", p)
        go func() {
            fmt.Printf("go协程中数字[%d]\n", p)
        }()
    }
    time.Sleep(time.Second * 5)
}


方式二:协程中数字可以分别打印

func main() {
    m := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    for _, p := range m {
        fmt.Printf("当前数字[%d]\n", p)
        go fmt.Printf("go协程中数字[%d]\n", p)
    }
    time.Sleep(time.Second * 5)
}

方式三:协程中数字也可以分别打印
func main() {
    m := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    for _, p := range m {
        fmt.Printf("当前数字[%d]\n", p)
        go f(p)
    }
    time.Sleep(time.Second * 5)
}
func f(p int) {
    fmt.Printf("go协程中数字[%d]\n", p)
}
 
阅读全文
0 0
原创粉丝点击