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 मेथड Items, HasMore और NextCursor वाला *openemail.Page लौटाता है। अगला पेज पढ़ने के लिए 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 अनुरोधों को रोक देता है। All() पर range चलाएँ, या एक सादे लूप में Next, Item और Err कॉल करें।
जब API वही कर्सर दोहराता है जिसका वह पहले पीछा कर चुका है तो इटरेटर रुक जाता है, इसलिए कोई क्रम कभी हमेशा के लिए नहीं घूम सकता।