Изучение ключевого слова range в Go

GolangGolangBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Ключевое слово range используется для перебора элементов в различных структурах данных в Golang. В этом практическом занятии мы изучим, как использовать range с разными структурами данных.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go/FunctionsandControlFlowGroup -.-> go/range("Range") subgraph Lab Skills go/range -.-> lab-15497{{"Изучение ключевого слова range в Go"}} end

Range

Задача, которую нужно решить в этом практическом занятии, — показать, как использовать range с срезами, массивами, картами и строками.

Для завершения этого практического занятия вам понадобятся:

  • Основы синтаксиса Golang
  • Установленный на вашем компьютере Golang
$ go run range.go
sum: 9
index: 1
a - > apple
b - > banana
key: a
key: b
0 103
1 111

Ниже представлен полный код:

// _range_ перебирает элементы в различных структурах
// данных. Посмотрим, как использовать `range` с некоторыми
// из структур данных, которые мы уже изучали.

package main

import "fmt"

func main() {

	// Здесь мы используем `range` для суммирования чисел в срезе.
	// Массивы работают так же.
	nums := []int{2, 3, 4}
	sum := 0
	for _, num := range nums {
		sum += num
	}
	fmt.Println("sum:", sum)

	// `range` для массивов и срезов предоставляет как индекс,
	// так и значение для каждого элемента. Выше мы не
	// понадоблялись индексы, поэтому игнорировали их с
	// помощью пустого идентификатора `_`. Иногда мы
	// на самом деле хотим получить индексы.
	for i, num := range nums {
		if num == 3 {
			fmt.Println("index:", i)
		}
	}

	// `range` для карты перебирает пары ключ/значение.
	kvs := map[string]string{"a": "apple", "b": "banana"}
	for k, v := range kvs {
		fmt.Printf("%s -> %s\n", k, v)
	}

	// `range` также может перебирать только ключи карты.
	for k := range kvs {
		fmt.Println("key:", k)
	}

	// `range` для строк перебирает кодовые точки Unicode.
	// Первое значение — это начальный байтовый индекс
	// `rune`, а второе — сам `rune`. См. раздел
	// [Strings and Runes](strings-and-runes) для более
	// подробной информации.
	for i, c := range "go" {
		fmt.Println(i, c)
	}
}

Резюме

В этом практическом занятии мы узнали, как использовать range с срезами, массивами, картами и строками в Golang. Ключевое слово range предоставляет удобный способ перебора элементов в различных структурах данных.