在Golang中,可以使用context
包來設置超時控制。下面是一個示例代碼,展示了如何在Golang中設置超時控制:
package main
import (
"context"
"fmt"
"time"
)
func main() {
// 創建一個具有5秒超時的上下文
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// 在goroutine中執行一個長時間運行的任務
go func() {
time.Sleep(10 * time.Second)
fmt.Println("Long running task completed")
}()
// 在主goroutine中監聽超時
select {
case <-ctx.Done():
fmt.Println("Timeout exceeded")
}
}
在上面的示例中,我們使用context.WithTimeout
函數創建了一個帶有5秒超時的上下文。然后,我們在一個goroutine中執行了一個長時間運行的任務。在主goroutine中,我們使用select
語句監聽上下文的Done
通道,一旦超時,我們就會輸出"Timeout exceeded"。
通過使用context
包,我們可以輕松地在Golang中設置超時控制,以確保長時間運行的任務不會導致程序永久阻塞。