将* string类型转换为bson.ObjectId类型

i need to convert type string to bson.ObjectId, this is my current code :

type CampaignUpdateBody struct {
    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      *string    `json:"smtp_list_id" bson:"smtp_list"`
    EmailList     *string    `json:"email_list_id" bson:"email_list"`
}

// LetterTemplateUpdate updates some fields of the letter template.
func (s *Service) CampaignUpdate(c *gin.Context) {
    id := bson.ObjectIdHex(c.Param("id"))
    if !id.Valid() {
        c.JSON(http.StatusBadRequest, gin.H{"error": "id has wrong format"})
        return
    }

    var body CampaignUpdateBody
    if err := c.BindJSON(&body); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }
    token := c.MustGet(tokenKey).(*models.Token)

    params := storage.CampaignUpdateParams{}
    params.ID = id
    //..........................
    params.BodyText  = body.BodyText
    params.BodyHTML  = body.BodyHTML
    params.SmtpList  = body.SmtpList
    params.EmailList = body.EmailList

    stor := c.MustGet(storageKey).(storage.Storage)
    if err := stor.CampaignUpdate(token.UserID, params); err != nil {
        c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
        return
    }
    c.JSON(http.StatusOK, gin.H{})
}

and this is my current error :

..\httpservice\campaigns.go:134:19: cannot use body.SmtpList (type *string) as t
ype bson.ObjectId in assignment
..\httpservice\campaigns.go:135:19: cannot use body.EmailList (type *string) as
type bson.ObjectId in assignment

i need convert body.SmtpList type as *string in bson.ObjectId , how i can do this ?

According to the documentation, bson.ObjectId is defined as

type ObjectId string

Given that, you should be able to use

params.SmtpList = bson.ObjectId(*body.SmtpList)

That's a type conversion, which works because the underlying type of ObjectId is string.

Note that you need to make sure that body.SmtpList isn't nil before doing this or your code will panic.