// GenerateNatural 从最小素数开始生成自然数 funcGenerateNatural() <-chanint { ch := make(chanint) gofunc() { for i := 2; ; i++ { ch <- i } }() return ch }
// filter 通过较小的素数得到较大的素数 funcfilter(in <-chanint, prime int) <-chanint { out := make(chanint) gofunc() { for { if v := <-in; v%prime != 0 { out <- v } } }() return out }
funcmain() { ch := GenerateNatural() for i := 0; i < 100; i++ { p := <-ch fmt.Printf("seq = %d, num = %d\n", i+1, p) ch = filter(ch, p) } }