Go
صفحهبندی
یک صفحه، همهٔ صفحهها، یا هر بار یک آیتم.
یک صفحه
page, err := client.Threads.List(ctx, openemail.WithFolder("inbox"), openemail.WithLimit(25))if err != nil { return err} for _, thread := range page.Items { fmt.Println(thread.ID())} if page.HasMore { next, err := client.Threads.List(ctx, openemail.WithFolder("inbox"), openemail.WithCursor(page.NextCursor)) if err != nil { return err } fmt.Println(len(next.Items))}یک متد List یک *openemail.Page با Items، HasMore و NextCursor برمیگرداند. برای خواندن صفحهٔ بعد، NextCursor را با openemail.WithCursor و همان فیلترها برگردانید.
همهٔ صفحهها
failed, err := client.Emails.ListAll(ctx, openemail.WithStatus("failed"))if err != nil { return err} fmt.Println(len(failed), "messages failed")یک متد ListAll مکاننما را تا انتها دنبال میکند و همهٔ موردها را در یک slice برمیگرداند. شکست در هر صفحه کل فراخوانی را ناموفق میکند.
هر بار یک مورد
for contact, err := range client.Contacts.Iterate(ctx, openemail.WithLimit(100)).All() { if err != nil { return err } if contact.String("email") == "[email protected]" { break }} events := client.Emails.IterateEvents(ctx, "msg_3f9a1c07d2b84e6a9c5b1f20") for events.Next() { fmt.Println(events.Item().String("type"))} return events.Err()یک متد Iterate یک *openemail.Iterator برمیگرداند که صفحهٔ بعد را فقط وقتی میخواهد که حلقه به آن برسد، پس یک break درخواستها را متوقف میکند. با range روی All() پیمایش کنید، یا در یک حلقهٔ ساده Next، Item و Err را فراخوانی کنید.
یک پیمایشگر وقتی API مکاننمایی را که پیشتر دنبال کرده تکرار کند میایستد، پس یک پیمایش هرگز نمیتواند تا ابد بچرخد.