Go 1.23 引入了原生的 Iterator 支援,這是 Go 語言在函數式程式設計道路上的重要里程碑。這篇將分享 Go Iterator 的設計理念、使用方法和實踐。
Iterator(迭代器)是一個**函數**,它將序列中的連續元素傳遞給 callback 函數(通常命名為 yield
)。當序列結束或 yield 返回 false 時,函數會停止迭代。
在 Go 1.23 中,Iterator 是語言的原生特性,介面定義在 iter
套件中。
Go 定義了兩種主要的 Iterator 類型:
type Seq[V any] func(yield func(V) bool)
type Seq2[K, V any] func(yield func(K, V) bool)
yield 函數的核心語意是:"產出並詢問是否繼續"