2

labix.org/v2/mgoパッケージを使用して、MongoDbデータベースから取得したコンテンツを構造体のエクスポートされたフィールドに入力しようとしています。

mgolabix.org/v2/mgo/bsonパッケージを使用してデータをアンマーシャリングします。ただし、アンマーシャラーは、エクスポートされていないすべてのフィールドをゼロ値に設定します。

この動作を防ぐ方法はありますか?

作業例:

package main

import (
    "fmt"
    "labix.org/v2/mgo/bson"
)

type Sub struct{ Int int }

type Player struct {
    Name       string
    unexpInt   int
    unexpPoint *Sub
}

func main() {
    dta,err := bson.Marshal(bson.M{"name": "ANisus"})
    if err != nil {
        panic(err)
    }

    p := &Player{unexpInt: 12, unexpPoint: &Sub{42}}

    fmt.Printf("Before: %+v\n", p)
    err = bson.Unmarshal(dta, p)
    if err != nil {
        panic(err)
    }
    fmt.Printf("After: %+v\n", p)
}

出力:

Before: &{Name: unexpInt:12 unexpPoint:0xf84005f500}
After: &{Name:ANisus unexpInt:0 unexpPoint:<nil>}
4

1 に答える 1