Skip to content

Commit 9c4f411

Browse files
authored
Merge pull request #884 from devlights/add-iter-slices-all
2 parents 669c146 + edf517e commit 9c4f411

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

examples/basic/slices/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@
2222
| slice_convert_to_array_go117.go | slice_convert_to_array_go117 | Go 1.17 以降で有効な スライス から 配列 への変換方法についてのサンプルです |
2323
| slice_append_special_behavior.go | slice_append_special_behavior | append() を利用する際の特別な挙動に付いてのサンプルです |
2424
| slice_iter_values.go | slice_go123_iter_values | Go 1.23で追加された slices.Values() のサンプルです |
25+
| slice_iter_all.go | slice_go123_iter_all | Go 1.23で追加された slices.All() のサンプルです |

examples/basic/slices/examples.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,5 @@ func (r *register) Regist(m mapping.ExampleMapping) {
3333
m["slice_convert_to_array_go117"] = ConvertToArrayGo117
3434
m["slice_append_special_behavior"] = AppendSpecialBehavior
3535
m["slice_go123_iter_values"] = IterValues
36+
m["slice_go123_iter_all"] = IterAll
3637
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package slices
2+
3+
import (
4+
"iter"
5+
"maps"
6+
"slices"
7+
8+
"github.com/devlights/gomy/output"
9+
)
10+
11+
// IterAll は、Go 1.23で追加された slices.All() のサンプルです。
12+
//
13+
// > All returns an iterator over index-value pairs in the slice in the usual order.
14+
// > (Allは、スライス要素をインデックス付きで順番に返すイテレータを返します。)
15+
//
16+
// 一番シンプルな形のイテレータ関数。元のスライスをそのままインデックス付きのイテレータにしてくれるだけ。
17+
// iter.Seq2[int, E] を要求する他の関数を呼び出す際などに経由させて使える。
18+
//
19+
// # REFERENCES
20+
// - https://pkg.go.dev/slices@go1.23.4#All
21+
func IterAll() error {
22+
var (
23+
s []string
24+
it iter.Seq2[int, string]
25+
)
26+
27+
s = []string{"golang", "javascript", "java", "csharp", "python", "rust"}
28+
it = slices.All(s)
29+
30+
for i, v := range it {
31+
output.Stdoutf("[i, v]", "%d, %v\n", i, v)
32+
}
33+
34+
output.StdoutHr()
35+
36+
// maps.Collect() は、iter.Seq2[K,V] を受け取り、map[K]V にして返してくれる関数
37+
var (
38+
m = maps.Collect(it)
39+
)
40+
output.Stdoutf("[key=3]", m[3])
41+
42+
return nil
43+
}

0 commit comments

Comments
 (0)