在Go語言中,可以使用goroutine和channel來實現generator模式的數據流。下面是一個簡單的示例代碼:
package main
import (
"fmt"
)
func generator() <-chan int {
out := make(chan int)
go func() {
defer close(out)
for i := 0; i < 5; i++ {
out <- i
}
}()
return out
}
func main() {
stream := generator()
for num := range stream {
fmt.Println(num)
}
}
在上面的示例中,generator
函數返回一個只發送數據的只讀channel,然后在goroutine中向這個channel發送數據。在main
函數中,通過for循環不斷從channel中讀取數據,實現了generator模式的數據流。
通過這種方式,可以很方便地實現數據流的生成和處理,使代碼更加清晰和簡潔。