使用bson的golang结构默认值

时间:2019-01-27 22:09:37

标签: go

我正在寻找新结构的默认值,没有值,这是我当前的结构:

// Campaign represents a email campaign
type Campaign struct {
    ID             bson.ObjectId   `json:"id" bson:"_id"`
    CampaignName   string          `json:"campaign_name" bson:"campaign_name"`
    FromName       []string        `json:"from_name" bson:"from_name"`
    FromEmail      string          `json:"from_email" bson:"from_email"`
    ReplyEmail     string          `json:"reply_email" bson:"reply_email"`
    Subject        []string        `json:"subject" bson:"subject"`
    BodyText       string          `json:"body_text" bson:"body_text"`
    BodyHTML       string          `json:"body_html" bson:"body_html"`
    SMTPList       bson.ObjectId `json:"smtp_list" bson:"smtp_list"`
    EmailList      bson.ObjectId `json:"email_list" bson:"email_list"`
    DateCreated    time.Time       `json:"date_created" bson:"date_created"`
    DateUpdated    time.Time       `json:"date_updated" bson:"date_updated"`
    DateSendFinish time.Time       `json:"date_send_finish" bson:"date_send_finish"`
    OwnerID        bson.ObjectId   `json:"owner_id" bson:"owner_id"`
    Opens          int             `json:"opens" bson:"opens"`
    Clicks         int             `json:"clicks" bson:"clicks"`
    Status         string          `json:"status" bson:"status"`
}

我要返回状态=“草稿” 我该怎么做?

2 个答案:

答案 0 :(得分:0)

我能够找到另一篇文章

  

一个可能的想法是编写单独的构造函数

// Something is the structure we work with
type Something struct {
     Text string 
     DefaultText string 
} 

// NewSomething create new instance of Something
func NewSomething(text string) Something {
   something := Something{}
   something.Text = text
   something.DefaultText = "default text"
   return something
}
  

强制使用一种方法来获取结构(构造方法)。

     

一个好的设计是使您的类型不导出,但提供导出的   构造函数,例如NewMyType(),您可以在其中适当地   初始化您的结构/类型。还返回接口类型,而不是   具体类型,并且界面应包含其他用户想要的一切   与您的价值有关。而您的具体类型必须实现   界面。

     

这可以通过简单地使类型本身不导出来完成。您可以   导出函数NewSomething甚至是文本和字段   DefaultText,但不要导出结构类型的东西

     

为您自己的模块自定义它的另一种方法是使用Config struct to set default values(链接中的选项5)。   但是。

Original Post

答案 1 :(得分:0)

// Campaign represents a email campaign
type Campaign struct {
    ID             bson.ObjectId   `json:"id" bson:"_id"`
    CampaignName   string          `json:"campaign_name" bson:"campaign_name"`
    FromName       []string        `json:"from_name" bson:"from_name"`
    FromEmail      string          `json:"from_email" bson:"from_email"`
    ReplyEmail     string          `json:"reply_email" bson:"reply_email"`
    Subject        []string        `json:"subject" bson:"subject"`
    BodyText       string          `json:"body_text" bson:"body_text"`
    BodyHTML       string          `json:"body_html" bson:"body_html"`
    SMTPList       bson.ObjectId `json:"smtp_list" bson:"smtp_list"`
    EmailList      bson.ObjectId `json:"email_list" bson:"email_list"`
    DateCreated    time.Time       `json:"date_created" bson:"date_created"`
    DateUpdated    time.Time       `json:"date_updated" bson:"date_updated"`
    DateSendFinish time.Time       `json:"date_send_finish" bson:"date_send_finish"`
    OwnerID        bson.ObjectId   `json:"owner_id" bson:"owner_id"`
    Opens          int             `json:"opens" bson:"opens"`
    Clicks         int             `json:"clicks" bson:"clicks"`
    Status         string          `json:"status" bson:"status"`
}

您完全可以这样

campaign.Status = "draft"

或者如果您想要某种条件的话

if true {
campaign.Status = "draft"
} else {
campaign.Status = "sent"
}