キー"_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))