/
zxcqwe
/
test
Обзор
Документация
Войти
/
zxcqwe
/
test
Код
Запросы
2
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
feature
generics/genericMap.go
59 строк
1 KB
Vasily Parshentsev
commit message
21 апр 2025, 20:23
21 апр 2025, 20:23
701a4f2
Код
Авторство
О чём код?
package main import "fmt" // начало решения // Map - карта "ключ-значение". type Map[K comparable, V any] struct { origin map[K]V } // Set устанавливает значение для ключа. func (m *Map[K, V]) Set(key K, val V) { if m.origin == nil { m.origin = make(map[K]V) } m.origin[key] = val } // Get возвращает значение по ключу. func (m *Map[K, V]) Get(key K) V { return m.origin[key] } // Keys возвращает срез ключей карты. // Порядок ключей неважен, и не обязан совпадать // с порядком значений из метода Values. func (m *Map[K, V]) Keys() []K { keys := make([]K, 0, len(m.origin)) for k := range m.origin { keys = append(keys, k) } return keys } // Values возвращает срез значений карты. // Порядок значений неважен, и не обязан совпадать // с порядком ключей из метода Keys. func (m *Map[K, V]) Values() []V { values := make([]V, 0, len(m.origin)) for k := range m.origin { values = append(values, m.Get(k)) } return values } // конец решения func main() { m := Map[string, int]{} m.Set("one", 1) m.Set("two", 2) fmt.Println(m.Get("one")) // 1 fmt.Println(m.Get("two")) // 2 fmt.Println(m.Keys()) // [one two] fmt.Println(m.Values()) // [1 2] }