Создание и манипуляция картами в Go

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

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

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

Введение

В Go карты являются встроенными ассоциативными типами данных, которые позволяют хранить пары ключ/значение. В этом практическом задании будет проверяться ваша способность создавать, манипулировать и удалять пары ключ/значение в карте.

Карты

В этом практическом задании вам нужно создать карту, которая будет хранить количество раз, которое каждое слово встречается в заданной строке. Вам нужно разбить строку на слова, а затем пройтись по каждому слову, добавляя его в карту, если оно еще не существует, или увеличивая счетчик, если оно уже есть.

  • Вы должны использовать карту для хранения счетчиков слов.
  • Вы должны разбить входную строку на слова.
  • Вы должны пройтись по каждому слову в входной строке.
  • Вы должны добавить каждое слово в карту, если оно еще не существует, или увеличить его счетчик, если оно уже есть.
## Обратите внимание, что карты выводятся в виде `map[k:v k:v]`, когда
## выводятся с помощью `fmt.Println`.
$ go run maps.go
map: map[k1:7 k2:13]
v1: 7
v3: 0
len: 2
map: map[k1:7]
prs: false
map: map[bar:2 foo:1]

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

// _Карты_ - это встроенный в Go [ассоциативный тип данных](https://en.wikipedia.org/wiki/Associative_array)
// (иногда называемый _хэшами_ или _словарями_ в других языках).

package main

import "fmt"

func main() {

	// Чтобы создать пустую карту, используйте встроенную функцию `make`:
	// `make(map[key-type]val-type)`.
	m := make(map[string]int)

	// Устанавливайте пары ключ/значение с помощью стандартной синтаксиса `name[key] = val`.
	m["k1"] = 7
	m["k2"] = 13

	// При выводе карты с помощью, например, `fmt.Println` будут показаны все ее пары ключ/значение.
	fmt.Println("map:", m)

	// Получите значение для ключа с помощью `name[key]`.
	v1 := m["k1"]
	fmt.Println("v1:", v1)

	// Если ключ не существует, возвращается
	// [нулевое значение](https://go.dev/ref/spec#The_zero_value) типа значения.
	v3 := m["k3"]
	fmt.Println("v3:", v3)

	// Встроенная функция `len` возвращает количество пар ключ/значение,
	// когда вызывается для карты.
	fmt.Println("len:", len(m))

	// Встроенная функция `delete` удаляет пары ключ/значение из карты.
	delete(m, "k2")
	fmt.Println("map:", m)

	// Второй необязательный возвращаемый параметр при получении значения из карты
	// показывает, был ли ключ присутствует в карте. Это можно использовать, чтобы различать
	// отсутствующие ключи и ключи с нулевыми значениями, такими как `0` или `""`. Здесь нам не нужны
	// значения самих, поэтому мы игнорируем его с помощью _пустого идентификатора_ `_`.
	_, prs := m["k2"]
	fmt.Println("prs:", prs)

	// Также вы можете объявить и инициализировать новую карту в одной строке с помощью этого синтаксиса.
	n := map[string]int{"foo": 1, "bar": 2}
	fmt.Println("map:", n)
}

Резюме

В этом практическом задании вы узнали, как использовать карты в Go для хранения пар ключ/значение. Вы также узнали, как разбить строку на слова, пройтись по каждому слову и добавить его в карту. Завершив это практическое задание, вы должны лучше понять, как использовать карты в своих программах на Go.