问题描述
是否可以访问父结构字段以便我可以在扫描功能中使用它?我想在图像字符串中有 A
UUID。所以它的 http://blah.com/images/a/04756596-7cf1-4ee0-bc6e-38677f2057e8/test.jpg
a := models.A{}
rows.StructScan(&a);
type A struct {
UUID uuid.UUID `db:"uuid" json:"uuid"`
Name string `db:"name" json:"name"`
Image Image `db:"image" json:"image"`
}
type Image string
func (i *Image) Scan(value interface{}) error {
if value == nil {
*i = "https://picsum.photos/id/1029/400/150"
return nil
}
b := fmt.Sprintf("%s/images/a/**{A.UUID HERE}**/%s",config.ServerConfig.BaseUrl,value.(string))
*i = Image(b)
return nil
}
如果有更好的方法来解决这个问题,我会全力以赴,任何有关它的文档都将不胜感激。
解决方法
我从一条已被删除的评论中解决了这个问题。
将图像更改为结构并添加了 ID 字段。更新了 sql 语句以返回 A.UUID
作为其自身和 image.id
有点技巧,但 sqlx 不喜欢填充具有相同 db
标记的两个不同结构字段