有没有办法将 for 循环作为 go 例程运行而不将其放在单独的 func 中

假设我想设置一个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")


四季花海
浏览 189回答 2
2回答

慕标5832272

如果要在后台运行每个循环,请将 goroutine 嵌套在循环中并使用该sync.WaitGroup结构。import "sync"fmt.Println("We are doing something")//line below is my questionwg := sync.WaitGroup{}// Ensure all routines finish before returningdefer wg.Wait()for i := 1; i < 10; i ++ {&nbsp; &nbsp; wg.Add(1)&nbsp; &nbsp; go func() {&nbsp; &nbsp; &nbsp; &nbsp; defer wg.Done()&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println("stuff running in background")&nbsp; &nbsp; }()}// life goes onfmt.Println("c'est la vie")

叮当猫咪

做到这一点的唯一方法确实是围绕它创建一个函数。在您的示例中,这就是您的操作方式。fmt.Println("We are doing something")//line below is my questiongo func() {&nbsp; &nbsp; for i := 1; i < 10; i ++ {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println("stuff running in background")&nbsp; &nbsp; }&nbsp;}()// life goes onfmt.Println("c'est la vie")记下最后对函数的实际调用}()。否则编译器会向你抱怨。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go