我可以访问父结构字段吗?

问题描述

是否可以访问父结构字段以便我可以在扫描功能中使用它?我想在图像字符串中有 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 标记的两个不同结构字段