Параметр-карта в Go
Давайте теперь будем передавать в функцию карту и читать пары внутри.
Тип параметра пишут как map с ключом и значением, например
map[string]int. По ключу читают и записывают так же, как в
обычном коде.
Добавим балл по имени внутри функции func:
package main
import "fmt"
func func(scores map[string]int, name string, pts int) {
scores[name] = pts
}
func main() {
data := map[string]int{}
func(data, "ann", 10)
fmt.Println(data["ann"]) // выведет 10
}
После вызова в data по ключу "ann" лежит 10.
Запись по ключу внутри функции видна снаружи. Пустую карту создают
литералом map[string]int{}, а не нулевым значением: запись в
нулевую карту завершит программу ошибкой.
Прочитать значение и вернуть его можно функцией func:
package main
import "fmt"
func func(scores map[string]int, name string) int {
return scores[name]
}
func main() {
data := map[string]int{"ann": 5}
fmt.Println(func(data, "ann")) // выведет 5
}
Дана карта:
counts := map[string]int{"go": 1}
Напишите функцию func с параметром-картой и ключом
name, которая записывает 3 по этому ключу. Вызовите с
counts и ключом "go", затем выведите значение.
Напишите функцию func с картой map[string]int и
ключом, которая возвращает true, если ключ есть. Проверьте на
карте с одной парой и на пустой карте.
Скажите, видна ли снаружи запись scores[name] = pts, сделанная
внутри функции.