Go के मानचित्र (maps) कुंजी-मान युग्मों को संग्रहीत करने के लिए एक मौलिक डेटा संरचना हैं। इन युग्मों के माध्यम से कुशलतापूर्वक पुनरावृति करना कई अनुप्रयोगों के लिए महत्वपूर्ण है। यह लेख मानचित्रों के साथ काम करने के लिए एक संपूर्ण मार्गदर्शिका प्रदान करता है, निर्माण से लेकर पारगमन तक, सर्वोत्तम प्रथाओं और सामान्य कमियों पर ज़ोर देता है।
विषयसूची
- मानचित्रों की घोषणा और आरंभिकरण
- मानचित्रों पर पुनरावृति
- चुनिंदा रूप से कुंजियों और मानों पर पुनरावृति
- पुनरावृति के दौरान क्रम बनाए रखना
मानचित्रों की घोषणा और आरंभिकरण
Go मानचित्रों को make()
फ़ंक्शन या एक समग्र साक्षर (composite literal) का उपयोग करके घोषित किया जाता है। make()
प्रारंभिक क्षमता निर्दिष्ट करने की अनुमति देता है, बड़े मानचित्रों के लिए प्रदर्शन में सुधार करता है। छोटे, स्थिर रूप से परिभाषित मानचित्रों के लिए समग्र साक्षर अधिक संक्षिप्त होते हैं।
package main
import "fmt"
func main() {
// make() का उपयोग करके
myMap := make(map[string]int, 10) // 10 की प्रारंभिक क्षमता
myMap["apple"] = 1
myMap["banana"] = 2
myMap["cherry"] = 3
// समग्र साक्षर का उपयोग करके
anotherMap := map[string]int{
"apple": 1,
"banana": 2,
"cherry": 3,
}
fmt.Println("myMap:", myMap)
fmt.Println("anotherMap:", anotherMap)
}
मानचित्रों पर पुनरावृति
Go मानचित्र पर पुनरावृति करने का मानक तरीका for...range
लूप का उपयोग करना है। महत्वपूर्ण रूप से, पुनरावृत्ति क्रम की गारंटी नहीं है और यह रनों के बीच भिन्न हो सकता है। अपने प्रोग्राम तर्क के लिए किसी विशिष्ट क्रम पर निर्भर न करें।
package main
import "fmt"
func main() {
myMap := map[string]int{
"apple": 1,
"banana": 2,
"cherry": 3,
}
for key, value := range myMap {
fmt.Printf("कुंजी: %s, मान: %dn", key, value)
}
}
चुनिंदा रूप से कुंजियों और मानों पर पुनरावृति
यदि आवश्यक हो, तो आप केवल कुंजियों या मानों पर पुनरावृति करना चुन सकते हैं, अवांछित तत्व को अनदेखा करने के लिए रिक्त पहचानकर्ता _
का उपयोग कर सकते हैं:
// केवल कुंजियों पर पुनरावृति
for key := range myMap {
fmt.Println("कुंजी:", key)
}
// केवल मानों पर पुनरावृति
for _, value := range myMap {
fmt.Println("मान:", value)
}
पुनरावृति के दौरान क्रम बनाए रखना
यदि किसी विशिष्ट पुनरावृत्ति क्रम की आवश्यकता है, तो आपको एक क्रमबद्ध डेटा संरचना का उपयोग करना होगा। एक तरीका कुंजियों के एक स्लाइस का उपयोग करना है, उसे क्रमबद्ध करना है, और फिर स्लाइस के माध्यम से पुनरावृति करना है, मानचित्र से संबंधित मानों तक पहुँचना है:
package main
import (
"fmt"
"sort"
)
func main() {
myMap := map[string]int{
"apple": 1,
"banana": 2,
"cherry": 3,
}
keys := make([]string, 0, len(myMap))
for k := range myMap {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
fmt.Printf("कुंजी: %s, मान: %dn", k, myMap[k])
}
}