Skip to content

Instantly share code, notes, and snippets.

@madzhuga
Created August 21, 2023 04:43
Show Gist options
  • Save madzhuga/5f2981ea88b41a5806ef2099e137677d to your computer and use it in GitHub Desktop.
Save madzhuga/5f2981ea88b41a5806ef2099e137677d to your computer and use it in GitHub Desktop.
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