#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
тегом