golang如何通过取消context,终止函数执行?
可以像这样:
package main import ( "context" "fmt" "time" ) func main() { // 创建父级 context parentCtx := context.Background() // 创建可取消的子级 context childCtx, cancel := context.WithCancel(parentCtx) // 启动并发的函数或操作,接收 context 参数 go func(ctx context.Context) { // 模拟耗时操作 for { select { case <-ctx.Done(): // 收到取消信号 fmt.Println("收到取消信号,停止执行") return default: // 继续正常执行 fmt.Println("执行中...") time.Sleep(time.Second) } } }(childCtx) // 在需要终止函数执行的地方,调用 cancel() 函数 time.Sleep(3 * time.Second) cancel() // 等待一段时间以观察执行的效果 time.Sleep(2 * time.Second) fmt.Println("程序结束") }