İşte bazı parçaları bir harita, bir referans değişken değilse, nedir? Dave Cheney tarafından:
Bir harita değeri, bir runtime.hmap
yapıya bir göstericidir .
ve sonuç:
Sonuç
Haritalar, kanallar gibi, ancak dilimlerin aksine, yalnızca çalışma zamanı türlerine işaret eder. Yukarıda gördüğünüz gibi, harita sadece bir runtime.hmap
yapının göstergesidir .
Haritalar, bir Go programındaki diğer işaretçi değerleriyle aynı işaretçi semantiğine sahiptir. Derleyici tarafından harita sözdiziminin içindeki işlev çağrılarına yeniden yazılmasının hiçbir sihri yoktur runtime/hmap.go
.
Ve map
sözdiziminin tarihi / açıklaması hakkında ilginç bir parça :
Haritalar işaretçi ise, olması gerekmiyor *map[key]value
mu?
Haritaların işaretçi değerleri olması durumunda ifadenin neden türle birlikte make(map[int]int)
bir değer döndürdüğü
iyi bir sorudur map[int]int
. Bir döndürmesi gerekmez *map[int]int
mi? Ian Taylor
bir golang-fındık son zamanlarda bu cevap iplik 1 .
İlk günlerde harita dediğimiz şey şimdi işaretçi olarak yazılıyordu, yani siz yazdınız *map[int]int
. Hiç map
kimsenin yazmadan yazmadığını fark ettiğimizde bundan uzaklaştık *map
.
Türü bir işaretçi gibi görünmediği *map[int]int
için map[int]int
kafa karıştırıcı olsa da, tartışmalı bir şekilde türünün olarak yeniden adlandırılması, referans alınamayan işaretçi şekilli bir değerden daha az kafa karıştırıcıydı.