C/C++教程

context包

本文主要是介绍context包,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
package main

import (
	"fmt"
)

func main() {
	gen := func() <-chan int {
		dst := make(chan int)
		n := 1
		go func() {
			for {
				n++
				dst<-n
				}

		}()
		return dst
	}

		for n := range gen() {
			fmt.Println(n)
			if n == 5 {
				break
			}
		}

}
package main

import (
	"context"
	"fmt"
)

func main() {
	// gen generates integers in a separate goroutine and
	// sends them to the returned channel.
	// The callers of gen need to cancel the context once
	// they are done consuming generated integers not to leak
	// the internal goroutine started by gen.
	gen := func(ctx context.Context) <-chan int {
		dst := make(chan int)
		n := 1
		go func() {
			for {
				select {
				case <-ctx.Done():
					return // returning not to leak the goroutine
				case dst <- n:
					n++
				}
			}
		}()
		return dst
	}

	ctx, cancel := context.WithCancel(context.Background())
	defer cancel() // cancel when we are finished consuming integers

	for n := range gen(ctx) {
		fmt.Println(n)
		if n == 5 {
			break
		}
	}
}
这篇关于context包的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!