package iterator

import "github.com/googleapis/gax-go/v2/iterator"

Package iterator contains helper for working with iterators. It is meant for internal use only by the Go Client Libraries.

Index

Examples

Functions

func RangeAdapter

func RangeAdapter[T any](next func() (T, error)) iter.Seq2[T, error]

RangeAdapter transforms client iterator type into a iter.Seq2 that can be used with Go's range expressions.

This is for internal use only.

Example

Code:play 

//go:build go1.23

package main

import (
	"fmt"
	"iter"

	"github.com/googleapis/gax-go/v2/iterator"
	otherit "google.golang.org/api/iterator"
)

type exampleType struct {
	data []int
	i    int
}

func (t *exampleType) next() (int, error) {
	var v int
	if t.i == len(t.data) {
		return v, otherit.Done
	}
	v = t.data[t.i]
	t.i++
	return v, nil
}

func (t *exampleType) All() iter.Seq2[int, error] {
	return iterator.RangeAdapter[int](t.next)
}

func main() {
	t := &exampleType{
		data: []int{1, 2, 3},
	}
	for v, err := range t.All() {
		if err != nil {
			// TODO: handle error
		}
		fmt.Println(v)
	}
}

Output:

1
2
3

Source Files

iterator.go

Version
v2.14.1 (latest)
Published
Dec 20, 2024
Platform
linux/amd64
Imports
2 packages
Last checked
8 hours ago

Tools for package owners.