मैं एक समारोह है:का उपयोग नक्शा [स्ट्रिंग] प्रकार नक्शे के पैरामीटर के रूप में पूर्णांक [इंटरफ़ेस {}] इंटरफ़ेस {}
m := make(map[string]int)
m["k1"] = 7
m["k2"] = 13
fmt.Println(ReturnTuples(m))
:
func ReturnTuples(map_ map[interface{}]interface{}) [][]interface{} {
जिसमें मैं इस तरह कॉल करने के लिए कोशिश कर रहा हूँ
लेकिन मैं इसे string
के बाद से काम नहीं करना चाहिए
cannot use m (type map[string]int) as type map[interface {}]interface {} in argument to ReturnTuples
हो रही है और int
दोनों को लागू interface{}
?
मैंने खोज की है और सबसे अच्छा मुझे मिल सकता है Convert map[interface {}]interface {} to map[string]string लेकिन यह जवाब नहीं देगा कि मैं m
का तर्क के रूप में क्यों उपयोग नहीं कर सकता।
मुझे यह भी विश्वास है कि अगर समारोह की तर्क केवल interface{}
थी तो यह भी काम करेगी, क्योंकि map[something][something]
interface
लागू करता है, है ना? ऐसा करने का सबसे अच्छा तरीका क्या है, और यह मेरे मामले में क्यों काम नहीं करेगा?
https://golang.org/doc/faq#covariant_types – Volker
@ वोल्कर लेकिन मुझे विधि प्रकार गलत नहीं दिख रहा है, मैंने विधि प्रकार को भी लागू नहीं किया क्योंकि मैं केवल फ़ंक्शन के रिटर्न वैल्यू को प्रिंट कर रहा हूं। कंपाइलर कहता है कि समस्या –
तर्क प्रकार पर है क्योंकि आप 'नक्शा [स्ट्रिंग] int' को पास नहीं कर सकते हैं क्योंकि' नक्शा [इंटरफ़ेस {}] इंटरफेस {} 'है कि 'string',' int', और 'इंटरफेस {}' सभी में अलग-अलग डेटा संरचना है। 'स्ट्रिंग' एक एकल सूचक है जो शायद 64 बिट है, 'int' शायद 64 बिट मान पर हस्ताक्षर किया गया है, हालांकि' इंटरफ़ेस {} 'दो पॉइंटर्स की संरचना है [blankInterface] (https://golang.org/src/reflect/value .go # L174) – ymonad