Source file
src/iter/example_test.go
1
2
3
4
5 package iter_test
6
7 import (
8 "fmt"
9 "iter"
10 "slices"
11 "strings"
12 )
13
14 func ExampleSeq() {
15
16
17
18
19 var fib iter.Seq[int] = func(yield func(int) bool) {
20 a, b := 0, 1
21 for yield(a) {
22 a, b = b, a+b
23 }
24 }
25
26 for n := range fib {
27 if n > 50 {
28 break
29 }
30 fmt.Print(n, " ")
31 }
32 fmt.Println()
33
34
35
36 }
37
38 func ExampleSeq2() {
39
40
41
42
43 var attrs iter.Seq2[string, string] = func(yield func(string, string) bool) {
44 for field := range strings.SplitSeq("gopher=blue,size=large,tail", ",") {
45 k, v, _ := strings.Cut(field, "=")
46 if !yield(k, v) {
47 return
48 }
49 }
50 }
51
52 for k, v := range attrs {
53 fmt.Printf("%q %q\n", k, v)
54 }
55
56
57
58
59
60 }
61
62 func ExamplePull() {
63
64
65
66
67
68 next1, stop1 := iter.Pull(slices.Values([]int{1, 3, 5, 7}))
69 defer stop1()
70 next2, stop2 := iter.Pull(slices.Values([]int{2, 3, 6}))
71 defer stop2()
72
73 v1, ok1 := next1()
74 v2, ok2 := next2()
75 for ok1 || ok2 {
76 if !ok2 || ok1 && v1 <= v2 {
77 fmt.Print(v1, " ")
78 v1, ok1 = next1()
79 } else {
80 fmt.Print(v2, " ")
81 v2, ok2 = next2()
82 }
83 }
84 fmt.Println()
85
86
87
88 }
89
90 func ExamplePull2() {
91
92
93
94
95 next, stop := iter.Pull2(slices.All([]string{"hydrogen", "helium", "lithium"}))
96 defer stop()
97
98 for range 2 {
99 i, element, ok := next()
100 if !ok {
101 break
102 }
103 fmt.Println(i, element)
104 }
105
106
107
108
109 }
110
View as plain text