I like: ```go func Iter(ctx, data) (iter.Seq[Object], *error) ```
There are some examples of this pattern in https://pkg.go.dev/github.com/bobg/seqs Cheers, - Bob On Thursday, August 29, 2024 at 5:41:47 AM UTC-7 Dmitriy P wrote: > What is the best way to handle errors with iterators? > > How to handle error when we have some object and some type paginates data > (e.g. database/sql.Rows or > https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/s3#ListObjectsV2Paginator > )? > I found three, but which should be preferable or maybe I've missed some? > > ```go > type Object smth.Smth > type Paginator interface { > GetNext(ctx) ([]Object, error) // func doing heavy request over internet > HaveNext() bool > } > ``` > > ```go > func Iter(ctx, data) iter.Seq2[Object, error] > > for obj, err := Iter(...) { > if err != nil { > return err > } > // do smth with Object > } > ``` > > ```go > func IterWithErr(ctx, data, err *error) iter.Seq[Object] > > var err error > for obj := IterWithErr(..., &err) { > // do smth with Object > } > if err != nil { > return err > } > ``` > > ```go > func IterOverIter(ctx, data) iter.Seq2[iter.Seq[Object], error] > > for page, err := IterOverIter(...) { > if err != nil { > return err > } > for obj := page(...) { > // do smth with Object > } > } > ``` > > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/49ea54d4-5cb7-44a9-8e6e-9375939d52a5n%40googlegroups.com.