在Go语言中,创建goroutine是非常简单和直观的。goroutine是Go的轻量级线程,可以用来执行并行任务。创建goroutine的基本方法是在函数调用前加上关键字go
。这样,这个函数就会在一个新的goroutine中异步执行。下面我会通过一个例子来详细说明如何创建和使用goroutine。
假设我们有一个简单的函数,它打印从1到5的数字,每打印一个数字后暂停一秒钟:
gopackage main import ( "fmt" "time" ) func printNumbers() { for i := 1; i <= 5; i++ { fmt.Println(i) time.Sleep(time.Second) } }
如果我们直接调用printNumbers()
,它会同步执行,即主程序会等待这个函数执行完毕后才继续执行下一行代码。现在,如果我们想让这个函数在后台执行,不阻塞主程序的其他操作,我们可以在调用这个函数时使用go
关键字,如下所示:
gopackage 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 回复