Created
August 21, 2023 04:43
-
-
Save madzhuga/5f2981ea88b41a5806ef2099e137677d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Map / Мапа / Словарь | |
--------------------- | |
// Описание мапы (так ты ее описала, но еще не создала, память под нее не выделена, использовать еще нельзя) | |
var m map[string]int | |
// Делаешь мапу - теперь под нее выделяется память и в нее уже можно записывать занчения | |
m = make(map[string]int) | |
// Задаешь значение по ключу | |
m["key"] = 42 | |
// Получаешь значение по ключу | |
m["key"] | |
// Удаляешь значение по ключу | |
delete(m, "key") | |
// Получаешь значение по ключу. | |
// Если такого ключа нет, ok будет равен false | |
// Если такое значение есть - будет равен true | |
elem, ok := m["key"] // test if key "key" is present, retrieve if so | |
// Заполнение мапы структурами: | |
type Struct User { | |
Name string | |
Age int | |
} | |
// В этом случае порядок полей должен быть таким же, как в структуре | |
// Из-за этого считается плохой практикой. Лучше - следующий вариант | |
var m = map[string]User{ | |
"Ivan": {"Ivan", 39}, | |
"Max": {"Max", 41}, | |
} | |
// В этом случае тому, кто читает код, не нужно лазить открывать определение User | |
// чтоб посмотреть, какой порядок полей. Плюс если порядок полей поменяется - не придется в куче мест менять код. | |
var m = map[string]User{ | |
"Ivan": {Name: "Ivan"}, // Здесь мы Age можем не указывать | |
"Max": {Name: "Max", Age: 41}, | |
} | |
// Обход мапы | |
for key, value := range m { | |
fmt.Println(key) // "Max" | |
fmt.Println(value) // User{"Max", 39} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment