कुंजी "_id" . से संबद्ध मान प्रकार का है bson.ObjectId
जो बस एक string है ।
bson.M
एक प्रकार है map[string]interface{} , इसलिए आपको कथन टाइप करें
आईडी को ObjectId . के रूप में प्राप्त करने के लिए :
objid, ok := m["_id"].(ObjectId)
if !ok {
panic("Not ObjectId")
}
और ObjectId एक ObjectId.Hex() है
विधि जो ठीक वही लौटाती है जो आप चाहते हैं:ऑब्जेक्ट आईडी "शुद्ध" हेक्स स्ट्रिंग के रूप में:
fmt.Println(objid.Hex())
विकल्प
objid बस string . में परिवर्तित किया जा सकता है क्योंकि इसका अंतर्निहित प्रकार string है . तो आप इसे हेक्स string में बदलने के लिए कई और विकल्पों का उपयोग कर सकते हैं :
hexid := fmt.Sprintf("%x", string(objid))
अगर आप इसे प्रिंट करना चाहते हैं, तो आप सीधे कर सकते हैं:
fmt.Printf("%x", string(objid))
नोट: इसे string में कनवर्ट करना अन्य महत्वपूर्ण है fmt पैकेज अपने String() . को कॉल करेगा विधि जिसके परिणामस्वरूप एक स्ट्रिंग होती है जैसे ObjectIdHex("537f700b537461b70c5f0000") और यही वह है जिसे हेक्स में परिवर्तित किया जाएगा जो स्पष्ट रूप से वह नहीं है जो आप चाहते हैं।
वैकल्पिक रूप से आप encoding/hex का उपयोग कर सकते हैं
पैकेज और hex.EncodeToString()
समारोह:
hexid := hex.EncodeToString([]byte(objid))