Golang FAQ о сборке мусора:
Каждая переменная в Go существует, пока есть ссылки на нее.Если компилятор не может доказать, что на переменную не ссылаются после возврата функции, то компилятор должен выделить переменную в куче для сбора мусора, чтобы избежать ошибок висячих указателей.
В случае отсутствия ссылокиспользуется для текущей карты, это будет мусор, собранный языком.Но для удаления карты Нет никакого другого процесса, кроме зацикливания и удаления ключей по одному.as
myMap := make(map[string]bool)
for k, _ := range myMap{
delete(myMap, k)
}
Если вы повторно инициализируете карту, используя make
, она не будет разыменовывать то же самое, что очистит карту, но не разыменует ее.Если вы проверите для его len, он станет zero
package main
import (
"fmt"
)
func main() {
myMap := make(map[string]bool)
myMap["Jan"] = true
myMap["Feb"] = false
myMap["Mar"] = true
fmt.Println(len(myMap))
myMap = make(map[string]bool)
fmt.Println(len(myMap))
}
Наряду с этим, если вы печатаете адрес, он указывает на тот же адрес.
fmt.Printf("address: %p \n", &myMap)
myMap = make(map[string]bool)
fmt.Printf("address: %p ", &myMap)
Пример игровой площадки