キー"_id"に関連付けられた値 タイプはbson.ObjectId
これは単にstring 。
bson.M
タイプはmap[string]interface{} 、したがって、タイプアサーション
が必要です。 IDをObjectIdとして取得します :
objid, ok := m["_id"].(ObjectId)
if !ok {
panic("Not ObjectId")
}
そしてObjectId ObjectId.Hex()があります
必要なものを正確に返すメソッド:「純粋な」16進文字列としてのオブジェクトID:
fmt.Println(objid.Hex())
代替案
objid 簡単にstringに変換できます 基になるタイプがstringであるため 。したがって、さらに多くのオプションを使用して、16進数のstringに変換できます。 :
hexid := fmt.Sprintf("%x", string(objid))
印刷したいだけの場合は、直接行うことができます:
fmt.Printf("%x", string(objid))
注: stringに変換します それ以外の場合は重要ですfmt パッケージはそのString()を呼び出します ObjectIdHex("537f700b537461b70c5f0000")のような文字列になるメソッド これは16進数に変換されるものであり、明らかにあなたが望むものではありません。
または encoding/hexを使用できます
パッケージとhex.EncodeToString()
機能:
hexid := hex.EncodeToString([]byte(objid))