我有一个名为的结构体Article,它有一个名为Image. 默认情况下Image有 value nil。由于Image应该只保留Image.Id到数据库,我使用bson.BSONGetter,bson.BSONSetter和json.Marshaler接口来伪造这种行为。
但是在内部,如果我使用其他帮助程序将文件加载到此文件上,则可以将其Image用作io.ReadWriteCloser。
package main
import (
"io"
"fmt"
"gopkg.in/mgo.v2"
)
type Article struct {
Name string
Image *Image
}
type Image struct {
Id interface{}
io.ReadWriteCloser
}
func (i *Image) SetBSON(r bson.Raw) error {
i = &Image{}
return r.Marshal(i.Id)
}
func (i *Image) GetBSON() (interface{}, error) {
return i.Id
}
func (i *Image) MarshalJSON() ([]byte, error) {
return json.Marshal(i.Id)
}
这种方法现在的问题是,它是不可能的初始化Image中Image.SetBSON为Image是nil。
相关分类