Go में map एक बिल्ट-इन डेटा टाइप है, जो की को वैल्यू से जोड़ता है।
दूसरी प्रोग्रामिंग भाषाओं में map जैसी चीज़ को आपने डिक्शनरी, हैश टेबल, की/वैल्यू स्टोर या असोसिएटिव ऐरे जैसे नामों से देखा होगा।
सिंटैक्स के हिसाब से map ऐसा दिखता है:
map[KeyType]ElementType
यह जानना भी ज़रूरी है कि हर की अद्वितीय होती है। इसका मतलब यह है कि एक ही की को दो बार असाइन करने पर उससे जुड़ी वैल्यू बदल जाती है।
मैप बनाने के लिए आप यह कर सकते हैं:
// With map literal
foo := map[string]int{}
या
// or with make function
foo := make(map[string]int)
यहाँ कुछ ऑपरेशन दिए गए हैं जो आप मैप के साथ कर सकते हैं
// Add a value in a map with the `=` operator:
foo["bar"] = 42
// Here we update the element of `bar`
foo["bar"] = 73
// To retrieve a map value, you can use
baz := foo["bar"]
// To delete an item from a map, you can use
delete(foo, "bar")
अगर आप ऐसी की की वैल्यू निकालने की कोशिश करते हैं जो मैप में नहीं है, तो मैप उस वैल्यू टाइप की शून्य वैल्यू लौटाता है।
यह बात आपको उलझा सकती है, खासकर तब जब आपके ElementType की डिफॉल्ट वैल्यू (जैसे किसी int के लिए 0) ही एक मान्य वैल्यू हो।
यह जाँचने के लिए कि आपके मैप में कोई की है या नहीं, आप यह कर सकते हैं
value, exists := foo["baz"]
// If the key "baz" does not exist,
// value: 0; exists: false
आपके एक दोस्त की Gross Store नाम की एक पुरानी थोक दुकान है। यह नाम उस मात्रा से आया है जिसमें यह दुकान सामान बेचती है: यहाँ सब कुछ ग्रोस इकाई में होता है। आपके दोस्त ने आपसे अपनी दुकान के लिए एक पॉइंट ऑफ सेल (POS) सिस्टम बनाने को कहा है। पहले आप उसका एक प्रोटोटाइप बनाना चाहते हैं। आपके प्रोटोटाइप में आपका सिस्टम सिर्फ मात्रा ही दर्ज करेगा। मदद के लिए आपके दोस्त ने आपको मापों की एक सूची दी है:
| इकाई | संख्या |
|---|---|
| quarter_of_a_dozen | 3 |
| half_of_a_dozen | 6 |
| dozen | 12 |
| small_gross | 120 |
| gross | 144 |
| great_gross | 1728 |
इस माप का उपयोग करने के लिए आपको वह माप अपने प्रोग्राम में संग्रहीत करना होगा।
units := Units()
fmt.Println(units)
// Output: map[...] with entries like ("dozen": 12)
आपको एक ऐसा फंक्शन बनाना है जो ग्राहक के लिए नया (खाली) बिल बनाता है।
bill := NewBill()
fmt.Println(bill)
// Output: map[]
इसे बनाने के लिए आपको यह करना होगा:
unit units मैप में न हो तो false लौटाइए।bill में जोड़िए, और फिर true लौटाइए।unit की होती है।bill := NewBill()
units := Units()
ok := AddItem(bill, units, "carrot", "dozen")
fmt.Println(ok)
// Output: true (since dozen is a valid unit)
ध्यान रखिए कि लौटाई गई वैल्यू का टाइप
boolहै।
इसे बनाने के लिए आपको यह करना होगा:
false लौटाइएunit units मैप में न हो तो false लौटाइए।false लौटाइए।bill से पूरी तरह हटाइए और फिर true लौटाइए।true लौटाइए।bill := NewBill()
units := Units()
ok := RemoveItem(bill, units, "carrot", "dozen")
fmt.Println(ok)
// Output: false (because there are no carrots in the bill)
ध्यान रखिए कि लौटाई गई वैल्यू का टाइप
boolहै।
इसे बनाने के लिए आपको यह करना होगा:
item बिल में नहीं है तो 0 और false लौटाइए।true लौटाइए।bill := map[string]int{"carrot": 12, "grapes": 3}
qty, ok := GetItem(bill, "carrot")
fmt.Println(qty)
// Output: 12
fmt.Println(ok)
// Output: true
ध्यान रखिए कि लौटाई गई वैल्यू के टाइप
intऔरboolहैं।
Exercism पर साइन अप कीजिए और Go को 34 कॉन्सेप्ट165 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।