ExpertiDict

Go · Avançado · Inglês · Técnico

range over func

/ɹeɪndʒ ˈoʊ.vɚ fʌŋk/substantivo

Recurso do Go 1.23 que permite usar for range com uma função iteradora, como iter.Seq, que chama um yield para cada valor. Padroniza iteradores sobre qualquer coleção.

Onde usar

Usado em coleções próprias e em funções como slices.Values e maps.Keys. O corpo do for vira o yield, e break encerra a iteração com segurança.

Em código

func Contar(n int) iter.Seq[int] {
  return func(yield func(int) bool) {
    for i := range n {
      if !yield(i) { return }
    }
  }
}
// for v := range Contar(3) { ... } // 0 1 2

Exemplos

Range over func lets you loop over a custom collection.

Range over func permite iterar por uma coleção própria.

A break inside the loop makes yield return false.

Um break dentro do laço faz o yield devolver false.

Cuidado

Não confunda com goroutines ou channels: o iterador é uma chamada de função comum e não roda em paralelo.

Sinônimos

iterador de função

Veja também

Todos os termos de Go