Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 有没有一种方法可以将for循环作为go例程运行,而不将其放在单独的func中_For Loop_Go_Goroutine - Fatal编程技术网

For loop 有没有一种方法可以将for循环作为go例程运行,而不将其放在单独的func中

For loop 有没有一种方法可以将for循环作为go例程运行,而不将其放在单独的func中,for-loop,go,goroutine,For Loop,Go,Goroutine,假设我想设置一个for循环运行,但不想阻止执行,显然我可以将for循环放入函数f中,调用go f,继续我的生活, 但我很好奇是否有一种方法可以直接调用go for,比如: fmt.Println("We are doing something") //line below is my question go for i := 1; i < 10; i ++ { fmt.Println("stuff running in background") } // life goes on

假设我想设置一个for循环运行,但不想阻止执行,显然我可以将for循环放入函数
f
中,调用
go f
,继续我的生活,
但我很好奇是否有一种方法可以直接调用
go for
,比如:

fmt.Println("We are doing something")
//line below is my question
go for i := 1; i < 10; i ++ {
    fmt.Println("stuff running in background")
} 
// life goes on
fmt.Println("c'est la vie")
fmt.Println(“我们正在做某事”)
//下面是我的问题
求i:=1;i<10;i++{
fmt.Println(“后台运行的东西”)
} 
//生活还在继续
fmt.Println(“生活就是这样”)

要做到这一点,唯一的方法就是围绕它创建一个函数。在您的示例中,这是您将如何做到的

fmt.Println("We are doing something")
//line below is my question
go func() {
    for i := 1; i < 10; i ++ {
        fmt.Println("stuff running in background")
    } 
}()
// life goes on
fmt.Println("c'est la vie")
fmt.Println(“我们正在做某事”)
//下面是我的问题
go func(){
对于i:=1;i<10;i++{
fmt.Println(“后台运行的东西”)
} 
}()
//生活还在继续
fmt.Println(“生活就是这样”)

记下
}()
末尾函数的实际调用。否则编译器会向您投诉。

如果您想在后台运行每个循环,请将goroutine嵌套在循环中,并使用
sync.WaitGroup
结构

import "sync"

fmt.Println("We are doing something")

//line below is my question
wg := sync.WaitGroup{}

// Ensure all routines finish before returning
defer wg.Wait()

for i := 1; i < 10; i ++ {
    wg.Add(1)
    go func() {
        defer wg.Done()
        fmt.Println("stuff running in background")
    }()
}

// life goes on
fmt.Println("c'est la vie")
导入“同步”
fmt.Println(“我们正在做某事”)
//下面是我的问题
wg:=sync.WaitGroup{}
//确保所有例行程序在返回之前完成
延迟工作组等待()
对于i:=1;i<10;i++{
工作组.添加(1)
go func(){
推迟工作组完成()
fmt.Println(“后台运行的东西”)
}()
}
//生活还在继续
fmt.Println(“生活就是这样”)