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.