Documentation
¶
Overview ¶
Package iter は、イテレータ関連の処理が存在します.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Range ¶
func Range(n int) []struct{}
Range は、指定された回数分ループ可能な空スライスを生成して返します。
元ネタは https://github.com/bradfitz/iter/blob/master/iter.go です。
Example ¶
package main
import (
"log"
"os"
"github.com/devlights/gomy/iter"
)
func main() {
var (
appLog = log.New(os.Stdout, "", 0)
)
for i := range iter.Range(3) {
appLog.Print(i)
}
}
Output: 0 1 2
func RangeFn ¶
RangeFn は、Range に処理関数を指定できるバージョンです。挙動は同じです。
処理中にエラーが発生した場合、内部ループはそこで停止し (エラーが発生したインデックス, エラー) を返します。
Example ¶
package main
import (
"log"
"os"
"github.com/devlights/gomy/iter"
)
func main() {
var (
appLog = log.New(os.Stdout, "", 0)
)
fn := func(i int) error {
appLog.Print(i)
return nil
}
_, err := iter.RangeFn(3, fn)
if err != nil {
appLog.Fatal(err)
}
}
Output: 0 1 2
Types ¶
type ZipItem ¶ added in v0.3.3
type ZipItem struct {
Item1, Item2 interface{}
}
func Zip ¶ added in v0.3.3
func Zip(a, b []interface{}) []ZipItem
Zip は、指定された2つのスライスから項目を取り出し返します。
python の zip 関数と同じです。
Example ¶
package main
import (
"log"
"os"
"github.com/devlights/gomy/iter"
)
func main() {
var (
appLog = log.New(os.Stdout, "", 0)
)
var (
a = []interface{}{1, 2}
b = []interface{}{1, 2, 3}
)
for i, v := range iter.Zip(a, b) {
appLog.Printf("%d: %v:%v", i, v.Item1, v.Item2)
}
}
Output: 0: 1:1 1: 2:2
Click to show internal directories.
Click to hide internal directories.