在方法中初始化一个 nil 指针结构

我有一个名为的结构体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。


郎朗坤
浏览 213回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go