golang超时退出怎么设置

avatar
作者
筋斗云
阅读量:0

在Go语言中,可以使用context包来设置超时退出。下面是一个示例:

package main  import ( 	"context" 	"fmt" 	"time" )  func main() { 	// 创建一个父级的context 	ctx := context.Background()  	// 创建一个带有超时的子级context,超时时间为3秒 	ctx, cancel := context.WithTimeout(ctx, 3*time.Second) 	defer cancel()  	// 启动一个goroutine执行耗时操作 	go func() { 		// 模拟一个耗时的操作,需要5秒 		time.Sleep(5 * time.Second)  		// 检查context是否已经超时 		if ctx.Err() != nil { 			fmt.Println("超时退出") 			return 		}  		// 执行其他操作... 	}()  	// 等待context超时或被取消 	select { 	case <-ctx.Done(): 		fmt.Println(ctx.Err()) 	case <-time.After(10 * time.Second): 		fmt.Println("正常退出") 	} } 

在这个示例中,我们首先使用context.Background()创建一个父级的context,然后使用context.WithTimeout()创建一个带有超时的子级context,超时时间为3秒。

接着,我们在一个goroutine中执行耗时操作,这个操作需要5秒。在操作执行完毕后,我们检查context是否已经超时,如果超时则打印"超时退出"并返回。

最后,我们使用select语句来等待context超时或被取消。如果context超时,则打印超时错误信息;如果context被取消,则打印取消错误信息;如果超过10秒仍未超时或被取消,则打印"正常退出"。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!