在Golang中,可以使用关键字go
来创建一个goroutine。一个goroutine是一个轻量级的线程,它可以并发执行代码。
下面是一个简单的例子,展示如何创建一个goroutine:
package main import ( "fmt" "time" ) func sayHello() { for i := 0; i < 5; i++ { fmt.Println("Hello") time.Sleep(1 * time.Second) } } func main() { go sayHello() fmt.Println("Main function") time.Sleep(2 * time.Second) }
在上面的例子中,sayHello
函数被包装在一个goroutine中,通过go sayHello()
来创建一个goroutine。在main
函数中,我们也打印了一条消息并让主函数休眠2秒,以便给goroutine一些时间来执行。
如果想要管理goroutine,可以使用sync.WaitGroup
来等待goroutine的执行结束。下面是一个例子:
package main import ( "fmt" "sync" ) func sayHello(wg *sync.WaitGroup) { defer wg.Done() fmt.Println("Hello") } func main() { var wg sync.WaitGroup wg.Add(1) go sayHello(&wg) wg.Wait() fmt.Println("Main function") }
在上面的例子中,我们创建了一个sync.WaitGroup
,并在goroutine中调用wg.Done()
来标记goroutine的完成。在main
函数中,我们使用wg.Wait()
来等待goroutine的执行结束。
通过以上方法,我们可以创建和管理goroutine。需要注意的是,goroutine是轻量级的线程,因此可以创建大量的goroutine来实现并发执行。