Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "sort"
- )
- var m = make(map[string]int)
- func main() {
- //Создание отображение при помощи make
- ages := make(map[string]int)
- ages["alice"] = 31
- ages["paul"] = 43
- ages["peter"] = 13
- //Создание отображения литеральным способом
- newages := map[string]int{
- "alice": 31,
- "paul": 43,
- "peter": 13,
- "bob": 25}
- //Тестовые срезы для проверки функции Add
- testList := []int{1, 2, 3, 4, 5, 6}
- testList2 := []int{7, 8, 9, 10}
- //Функция Add подсчитывает сколько раз срез был добавлен в множество
- add(testList)
- add(testList2)
- add(testList2)
- add(testList2)
- fmt.Printf("Count(testList) = %d\n", count(testList))
- fmt.Printf("Count(testList2) = %d\n", count(testList2))
- fmt.Printf("%q\n", m)
- delete(newages, "bob") //Удаление элемента из отображения
- //Проверка на существование элемента с ключем bob в отображении ages
- age, ok := ages["bob"]
- if !ok {
- fmt.Println("Key 'bob' not exits in ages!")
- } else {
- fmt.Printf("Age of Bob = %d", age)
- }
- //Извлечение ключей из отображения для последующей сортировки
- var names []string
- for name := range ages {
- fmt.Printf("name=%s\n", name)
- names = append(names, name)
- }
- sort.Strings(names) //Сортировка среза строк
- fmt.Printf("names=%s\n", names)
- fmt.Printf("ages == newages is %t\n", equal(ages, newages))
- }
- //Преобразование целочисленного среза в строку для работы как ключ отображения
- func k(list []int) string { return fmt.Sprintf("%q", list) }
- func add(list []int) { m[k(list)]++ }
- func count(list []int) int { return m[k(list)] }
- //Сравнение двух отображений
- func equal(x, y map[string]int) bool {
- if len(x) != len(y) {
- return false
- }
- for k, xv := range x {
- if yv, ok := y[k]; !ok || yv != xv {
- return false
- }
- }
- return true
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement