«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Глубокое копирование языковых карт GO и очистка оригинальных методов карты

Глубокое копирование языковых карт GO и очистка оригинальных методов карты

Опубликовано в 2025-04-19
Просматривать:962

How to Deep Copy a Go Map and Clear the Original Without Affecting the Copy?

Создание ассоциативной карты в Go: Как глубоко копировать и очистить оригинал

В Go вы пытаетесь скопировать содержимое карты, называемой AMAP, в другую карту, названную AsuperMap. Впоследствии вы хотите прояснить AMAP, чтобы принять новые значения в итерации следующей цикла. Тем не менее, вы столкнетесь с проблемой очистки карты без также очистки ее ссылки в Asupermap.

проблема с ссылками

ваш псевдо -код иллюстрирует, что когда вы удаляете элемент из AMAP, используя Delete (amap, x), ссылка на этот элемент также удален из AsuperMap. Это связано с тем, что AsuperMap [y] содержит ссылку на AMAP, и когда вы модифицируете AMAP (в данном случае, удаляя элемент), вы фактически изменяете базовые данные, которые ASUperMap указывает на. &&]

глубокописывающие карты

, чтобы по -настоящему создать ассоциативную карту. Это включает в себя создание нового объекта MAP с собственной копией данных, а не просто содержит ссылку на исходную карту.

вы можете достичь, создав вручную для цикла, которая итерация по исходной карте и добавляет каждую пару клавишных значений к новой карте:

для k: = range-map { Newmap [k] = V. }
for k, v := range originalMap {
    newMap[k] = v
}
. Для этого вы можете использовать функцию сброса из пакета контейнера/списка:

для чего -то: = range Fruits { amap: = make (map [string] astruct) asupermap: = make (map [string] map [string] Astruct) для x: = range whenth { amap [x] = adata asupermap [y] = amap Удалить (amap, x) } // Deep Copy Amap в Newmap newmap: = make (map [string] astruct) для k, v: = range amap { Newmap [k] = V. } // очистить оригинальный AMAP Контейнер/список. Reset (AMAP) // Сохранить новую карту saveasupermap (newmap) }

, выполнив эти шаги, вы можете успешно создать ассоциативную карту в Go, выполнить глубокую копию карты для сохранения исходных данных и очистить исходную карту, чтобы принять новые значения в следующей итерации цикла. ]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3