Dalam Go, pembangun sering menghadapi senario di mana mereka memerlukan fungsi marshalling dan unmarshalling tersuai untuk struktur data yang kompleks. Apabila bekerja dengan BSON, format data binari MongoDB, keperluan untuk marshalling tersuai timbul. Artikel tersebut memperkenalkan konsep mentakrifkan perbarisan BSON tersuai melalui antara muka Getter dan Setter.
Secara khusus, soalan memfokuskan pada cara menulis marshalling BSON tersuai untuk struct Mata Wang yang merangkumi nilai mata wang dan kod mata wang. Kaedah MarshalJSON dan UnmarshalJSON ditunjukkan sebagai pendekatan yang berkesan untuk marshalling dan unmarshalling JSON tersuai. Walau bagaimanapun, mencari dokumentasi tentang BSON marshalling boleh menjadi mencabar.
Untuk mencapai BSON marshalling tersuai, struct Mata Wang mesti melaksanakan antara muka bson.Getter dan bson.Setter. Kaedah GetBSON mengembalikan perwakilan mesra BSON bagi struktur Mata Wang dan kaedah SetBSON menetapkan nilai struktur Mata Wang berdasarkan data BSON yang disediakan. Kod di bawah menunjukkan pelaksanaan ini:
type Currency struct { value decimal.Decimal //The actual value of the currency. currencyCode string //The ISO currency code. } // GetBSON implements bson.Getter. func (c Currency) GetBSON() (interface{}, error) { f := c.Value().Float64() return struct { Value float64 `json:"value" bson:"value"` CurrencyCode string `json:"currencyCode" bson:"currencyCode"` }{ Value: f, CurrencyCode: c.currencyCode, }, nil } // SetBSON implements bson.Setter. func (c *Currency) SetBSON(raw bson.Raw) error { decoded := new(struct { Value float64 `json:"value" bson:"value"` CurrencyCode string `json:"currencyCode" bson:"currencyCode"` }) bsonErr := raw.Unmarshal(decoded) if bsonErr == nil { c.value = decimal.NewFromFloat(decoded.Value) c.currencyCode = decoded.CurrencyCode return nil } else { return bsonErr } }
Dengan melaksanakan kaedah ini, pembangun kini boleh menggunakan struct Mata Wang dengan lancar dengan MongoDB, membolehkan penggabungan tersuai dan pembongkaran data mata wang.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pemasaran BSON Tersuai untuk Go Struct?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!