जाओ विशिष्ट जानकारी states:मैं मानचित्र में [[16] बाइट] [] स्ट्रिंग कैसे बना सकता हूं?
The comparison operators == and != (§Comparison operators) must be fully defined for operands of the key type; thus the key type must not be a struct, array or slice. If the key type is an interface type, these comparison operators must be defined for the dynamic key values; failure will cause a run-time panic.
मैं जो Hash इंटरफ़ेस है, जो []byte
रिटर्न से आते हैं हैश मान का एक नक्शा बनाने के लिए है, लेकिन जिसके लिए मेरे सभी हैश एक ही एल्गोरिथ्म के साथ किया जाता है (जिससे मुझे पता है इच्छा कि यह [16]byte
में फिट होगा)। मैं उपयुक्त इंटरफ़ेस कैसे प्रदान कर सकता हूं जैसे map
प्रकार []byte
या [16]byte
या उसके कुछ रैपर को कुंजी के रूप में उपयोग करने की अनुमति देगा?
वर्तमान में अपने प्रयोग निम्न त्रुटि उत्पन्न करता है:
dupes := make(map[[16]byte][]string)
finddups.go:55: invalid map key type [16]uint8
अद्यतन (मार्च 2012): Go1 कुंजी प्रकार के रूप में [16]byte
अनुमति देता है।
क्या आप यह समझाने में सक्षम हैं कि ऐसा क्यों है? यह एक जादू प्रकार में परिवर्तित करने के लिए मनमाना लगता है जो स्वीकार्य है। –
@ मैट, यह बिल्कुल जादू नहीं है; गो स्पेक भी कहता है: 'स्ट्रिंग्स बाइट्स के सरणी की तरह व्यवहार करते हैं लेकिन अपरिवर्तनीय हैं'। इस प्रकार मैं पीटरसेओ से सहमत हूं कि यह उस रूपांतरण का स्वीकार्य उपयोग है। Http://golang.org/doc/go_spec.html#String_types – Poindexter
@Poindexter देखें: यह असंभवता प्रतीत होता है कुंजी (पन इरादा नहीं है)। हाहाहा भी अच्छा नाम है। –