Hi,
Java is certainly not Go, now we have a great simplification to develop 
code, but you can clarify the context for making a decision in the 
description of the ValueListHandler J2EE pattern.

Regards,

пятница, 6 сентября 2024 г. в 02:11:39 UTC+3, cpasmaboiteaspam: 

> Hello,
>
> I would definitely use *func Iter(ctx, data) iter.Seq2[T, error]*
>
> Because its standard and it is easy for the end user to build a bridge to 
> a scanner like API 
> such as struct[T any]{ All() iter.Seq[T]; Err() error },
> or* anything else*.
>
> Because i have make the *trailing error return* a *first citizen*, 
> that signature fits straight into my own experiments .
>
> For certain, i would not use func IterWithErr(ctx, data, err *error) 
> iter.Seq[T]
> It data raced the second i tried this approach.
>
> spaghetti for thoughts.
> https://go.dev/play/p/55w9IqH0KPQ
>
>
>
> Le mardi 3 septembre 2024 à 19:19:31 UTC+2, Christoph Berger a écrit :
>
>> I like this approach.
>>
>>    - bufio.Scanner-style errors are a known pattern from the stdlib
>>    - The approach keeps the key and value params free for their intended 
>>    use
>>    - It doesn't require nested iter seqs
>>    - It is compatible with range loops
>>
>> Made some sample code as PoC -> https://go.dev/play/p/6qhH6ZN6f0S (Doesn't 
>> work in the playground due to network restrictions)
>>
>> On Saturday, August 31, 2024 at 1:38:53 PM UTC+2 gbarr wrote:
>>
>>> I would likely go with something similar to how you would currently use 
>>> bufio.Scanner but comine the use of  .Scan()  and .Text() as Range()
>>>
>>> ```go
>>> iter := rows.Iter(ctx)
>>> for obj := iter.Range {
>>>     // do something with obj
>>> }
>>> if err := iter.Err(); err != nil {
>>>     return err
>>> }
>>> ```
>>>
>>> Or if rows can only have a single active iterator the there is no need 
>>> for the iter object
>>>
>>> ```go
>>> for obj := rows.Range(ctx) {
>>>     // do something with obj
>>> }
>>> if err := rows.Err(); err != nil {
>>>     return err
>>> }
>>> ```
>>>
>>> Graham.
>>>
>>> On Thursday, August 29, 2024 at 1:41:47 PM UTC+1 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/436b5c60-3989-42f4-891f-c7e158a27a84n%40googlegroups.com.

Reply via email to