2012-10-01 17 views
30

मैं container/list.List उदाहरणों का नक्शा बनाना चाहता हूं। क्या यह इसके बारे में जाने का सही तरीका है?सूचियों का गोलांग नक्शा बनाएं

package main 

import (
    "fmt" 
    "container/list" 
) 

func main() { 
    x := make(map[string]*list.List) 

    x["key"] = list.New() 
    x["key"].PushBack("value") 

    fmt.Println(x["key"].Front().Value) 
} 
+0

यकीन है, लेकिन मैं मदद नहीं कर सकता, लेकिन आश्चर्य है कि क्यों की आवश्यकता होगी ऐसी चीज जब तक कि आप कुछ वास्तव में संदिग्ध प्रसंस्करण नहीं कर रहे थे – dskinner

+1

बधाई हो, आपका कोड बस [काम करता है] (http://play.golang.org/p/EuYA92BtOR)। – zzzz

+1

निश्चित है, लेकिन क्या यह करने का * सही * तरीका है? – Carson

उत्तर

58

जब भी मैं एक List उपयोग करने के लिए मैंने पाया कि एक टुकड़ा सही विकल्प था चाहता था, जैसे

package main 

import "fmt" 

func main() { 
    x := make(map[string][]string) 

    x["key"] = append(x["key"], "value") 
    x["key"] = append(x["key"], "value1") 

    fmt.Println(x["key"][0]) 
    fmt.Println(x["key"][1]) 
} 
8

वहाँ तकनीकी रूप से आप क्या लिखा है के बारे में गलत कुछ भी नहीं है, लेकिन आप चाहिए कुछ नुकसान से बचने के लिए map[string]*list.List के आस-पास अपने स्वयं के प्रकार को परिभाषित करें, जैसे कि शून्य सूचक पर .Front() विधि को कॉल करने का प्रयास करना। या उस स्थिति से बचने के लिए इसे map[string]list.List बनाएं। एक सूची। सूची केवल पॉइंटर्स की एक जोड़ी और लंबाई मान है; एक सूची का उपयोग कर। अपने मानचित्र में लिस्ट पॉइंटर बस खाली सूची के मामले में एक शून्य सूचक का अतिरिक्त मामला जोड़ता है। किसी भी स्थिति में, आपको इस उपयोग के मामले के लिए एक नई संरचना परिभाषित करनी चाहिए।

मैं इसे इस तरह लिखने के लिए इच्छुक हो जाएगा: http://play.golang.org/p/yCTYdGVa5G

1

स्लाइस का एक नक्शा घोषित करने के लिए मेरा पसंदीदा वाक्य रचना:

mapOfSlices := map[string][]string{ 
    "first": {}, 
    "second": []string{"one", "two", "three", "four", "five"}, 
    "third": []string{"quarter", "half"}, 
} 
संबंधित मुद्दे