2014-04-20 26 views
5

में पायथन के सेटडेफॉल्ट का एनालॉग पाइथन - सेटडेफॉल्ट विधि में शब्दकोशों के लिए आसान शॉर्टकट है।गोलांग

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

: उदाहरण के लिए, अगर मैं dict है स्ट्रिंग से मानचित्रण का प्रतिनिधित्व करता है कि सूचीबद्ध करने के लिए, मैं इस

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

यह भी वर्बोज़ और यह करने के लिए अधिक pythonic तरीका है की तरह कुछ लिख सकते हैं तो तरह है वैसे भी एक डिफ़ॉल्ट डिक्शन क्लास है।

तो मेरा सवाल है - क्या गो में नक्शे के लिए कुछ समान है? मैं वास्तव में मैप [स्ट्रिंग] [] int और इसी तरह के प्रकारों के साथ काम करने से नाराज हूं।

उत्तर

6

वहाँ विशेष रूप से नक्शे के लिए नहीं है ऐसी बात है, लेकिन nil एक वैध खाली टुकड़ा (जो append builtin के साथ प्रयोग किया जा सकता है) तो निम्नलिखित कोड है:

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

कि क्या key की परवाह किए बिना काम करेगा मानचित्र में मौजूद है या नहीं।

1

यह डिफ़ॉल्ट नक्शे के साथ ठीक काम करता है, 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

लेकिन, नोटिस देना चाहिए कि यह नक्शे, आप अभी भी स्पष्ट रूप से 'make' नक्शा मूल्यों चाहिए के नक्शे के लिए काम नहीं करेगा। – maxbublis