2014-04-20 15 views
5

Python - setdefault yönteminde sözlükler için kullanışlı kısayollar vardır.Python'ın setdefault parametresinin golang içinde analogu

map.setdefault(key, []).append(value) 

: Ben dicti varsa Örneğin, ben bu çok ayrıntılı ve bunu yapmak için daha pythonic yoludur bu

if key not in map: 
    map[key] = [] 
map[key].append(value) 

gibi bir şey yazabilir listelemek için dizesinden eşleştirmesini temsil böylece gibidir Bu arada bir varsayılan sınıf var.

Benim sorum şu ki - Go'daki haritalar için benzer bir şey var mı? Harita [string] [] int ve benzeri gibi türlerle çalışmaktan gerçekten rahatsızım.

cevap

6

yoktur böyle bir şey özellikle haritalar için, ama nil (append yerleşiğine ile kullanılabilir) geçerli boş dilim için aşağıdaki kodu şöyledir:

x := make(map[string][]int) 
key := "foo" 
x[key] = append(x[key], 1) 

bakılmaksızın key olsun çalışacak haritada var veya yok.

1

Varsayılan harita ile çalışıyor, play:

m := make(map[string][]int) 
m["test0"] = append(m["test0"], 10) 
m["test1"] = append(m["test1"], 10) 
m["test2"] = append(m["test2"], 10) 
+2

Ama haritalar, şunları yapmalısınız hala açıkça 'make' haritası değerleri Harita için çalışmaz, göreceksiniz. – maxbublis