在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來實現并發執行。