使用gopkg.in/mgo.v2/bson
,我想知道如何将 interface{} 值编组为 type 的值bson.Raw
。
状态的文档bson.Raw
:
使用这种类型,可以部分地解组或编组值。
但我找不到会返回的 Marshal 函数bson.Raw
。
我错过了什么?
我尝试做的示例:
package main
import (
"fmt"
"gopkg.in/mgo.v2/bson"
)
func main() {
// How to avoid a MarshalRaw help function?
raw, err := MarshalRaw("Hello world")
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", raw)
}
func MarshalRaw(v interface{}) (*bson.Raw, error) {
bin, err := bson.Marshal(struct{ Raw interface{} }{v})
if err != nil {
return nil, err
}
var raw struct{ Raw bson.Raw }
err = bson.Unmarshal(bin, &raw)
if err != nil {
return nil, err
}
return &raw.Raw, nil
}
输出:
&{种类:2 数据:[12 0 0 0 72 101 108 108 111 32 119 111 114 108 100 0]}