Используя gopkg.in/mgo.v2/bson
, мне интересно, как преобразовать значение интерфейса{} в значение введите bson.Raw
.
В документации для bson.Raw
указано:
Используя этот тип, можно неупорядочивать или частично упорядочивать значения.
Но я не могу найти функцию маршала, которая бы возвращала 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]}