Функция maps.Clone
Функция maps.Clone создает копию переданной карты.
Она принимает один параметр - исходную карту, а возвращает
новую карту с теми же ключами и значениями.
Клонирование является поверхностным: значения копируются
по ссылке, но сама структура карты создается заново.
Синтаксис
maps.Clone(map[M]K) map[M]K
Пример
Давайте создадим копию карты с целочисленными значениями:
package main
import (
"fmt"
"maps"
)
func main() {
original := map[string]int{"a": 1, "b": 2, "c": 3}
clone := maps.Clone(original)
fmt.Println(original)
fmt.Println(clone)
}
Результат выполнения кода:
map[a:1 b:2 c:3]
map[a:1 b:2 c:3]
Пример
Клонированная карта является независимой копией. Изменения в оригинальной карте не влияют на клон:
package main
import (
"fmt"
"maps"
)
func main() {
original := map[string]int{"a": 1, "b": 2, "c": 3}
clone := maps.Clone(original)
original["a"] = 100
clone["b"] = 200
fmt.Println(original)
fmt.Println(clone)
}
Результат выполнения кода:
map[a:100 b:2 c:3]
map[a:1 b:200 c:3]
Пример
Клонирование работает с любыми типами ключей и значений. Давайте скопируем карту со строковыми ключами и слайсами в качестве значений:
package main
import (
"fmt"
"maps"
)
func main() {
original := map[int][]string{
1: {"a", "b"},
2: {"c", "d"},
}
clone := maps.Clone(original)
fmt.Println(original)
fmt.Println(clone)
}
Результат выполнения кода:
map[1:[a b] 2:[c d]]
map[1:[a b] 2:[c d]]
Пример
Функция maps.Clone корректно обрабатывает пустые
и nil карты. Передача nil карты вернет
также nil:
package main
import (
"fmt"
"maps"
)
func main() {
var empty map[string]int
var nilMap map[string]int
cloneEmpty := maps.Clone(empty)
cloneNil := maps.Clone(nilMap)
fmt.Println(cloneEmpty == nil)
fmt.Println(cloneNil == nil)
}
Результат выполнения кода:
false
true
Смотрите также
-
функцию
maps.Copy,
которая копирует все пары ключ-значение из одной карты в другую -
функцию
maps.Equal,
которая сравнивает две карты на равенство -
функцию
maps.Keys,
которая возвращает все ключи карты в виде слайса -
функцию
maps.Values,
которая возвращает все значения карты в виде слайса