乐闻世界logo
搜索文章和话题

How do you create a goroutine in Go?

1 个月前提问
1 个月前修改
浏览次数13

1个答案

1

在Go语言中,创建goroutine是非常简单和直观的。goroutine是Go的轻量级线程,可以用来执行并行任务。创建goroutine的基本方法是在函数调用前加上关键字go。这样,这个函数就会在一个新的goroutine中异步执行。下面我会通过一个例子来详细说明如何创建和使用goroutine。

假设我们有一个简单的函数,它打印从1到5的数字,每打印一个数字后暂停一秒钟:

go
package main import ( "fmt" "time" ) func printNumbers() { for i := 1; i <= 5; i++ { fmt.Println(i) time.Sleep(time.Second) } }

如果我们直接调用printNumbers(),它会同步执行,即主程序会等待这个函数执行完毕后才继续执行下一行代码。现在,如果我们想让这个函数在后台执行,不阻塞主程序的其他操作,我们可以在调用这个函数时使用go关键字,如下所示:

go
package main import ( "fmt" "time" ) func main() { go printNumbers() // 主程序继续执行其他操作 fmt.Println("开始执行其他任务") time.Sleep(6 * time.Second) // 确保主goroutine不会过早退出 fmt.Println("主程序结束") }

在这个例子中,我们在main函数中启动了一个goroutine来执行printNumbers函数。由于使用了go关键字,printNumbers函数会在一个新的goroutine中异步执行,这意味着main函数在启动这个goroutine后会立刻继续执行下一行代码,而不会等待printNumbers函数完成。

输出结果将类似于:

shell
开始执行其他任务 1 2 3 4 5 主程序结束

可以看到,数字的打印和"开始执行其他任务"几乎同时发生,这说明printNumbers函数是在一个独立的goroutine中并行执行的。

通过这个例子,我们可以看到在Go中创建goroutine是非常简单的,只需要在函数调用前加上go关键字。这使得并发编程在Go中变得非常容易和直观。

2024年8月7日 21:48 回复

你的答案