Могу ли я получить доступ к родительскому структурному полю?

#go #sqlx

#Вперед #sqlx

Вопрос:

Можно ли получить доступ к родительскому структурному полю, чтобы я мог использовать его в функции сканирования? Я хочу иметь A UUID в строке изображения. Итак, его http://blah.com/images/a/04756596-7cf1-4ee0-bc6e-38677f2057e8/test.jpg

 a := models.A{}                                                                                                                                                                                
rows.StructScan(amp;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
}
 

Если есть лучший способ подойти к этому, я весь внимание, и любая документация по нему приветствуется.

Комментарии:

1. Что вы подразумеваете под «родительской структурой»?

2. Я думаю, это был неправильный термин. Под этим я подразумеваю, что тип изображения находится в структуре A, и из функции сканирования изображения я хочу получить доступ к полю UUID структуры A

3. Ну, Scan принимает пустой интерфейс. Итак, без утверждения типа вы не можете получить доступ к каким-либо конкретным полям value .

Ответ №1:

Я смог исправить это из комментария, который с тех пор был удален.

Изменил изображение на структуру и добавил поле идентификатора. Обновлен оператор sql, чтобы возвращать A.UUID его как self и как image.id

Попытка взлома, но sqlx не хотел заполнять два разных поля структуры с одинаковым db тегом