@Adel1ne

Как передать columns в orm.update, если количество columns заранее не известно?

type My_table struct {
	Id int
	Name string
	Lastname string
}

o := orm.NewOrm()
field := My_table{Id: Id}
num, err := o.Update(&field, "name", "lastname")


Может возникнуть ситуация, когда нужно апдейтить только одно поле, например "name".

Функция создается так:
func (o *orm) Update(md interface{}, cols ...string) (int64, error)


Получается, мне нужна какая-то структура, которая бы описала этот cols ...string и я мог бы добавить в нее либо одно поле "name", либо оба "name", "lastname".

Подскажите, можно ли такое сделать?
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
@Adel1ne Автор вопроса
Вообщем, все оказалось достаточно просто, когда почитаешь внимательно мануалы.
Делаем массив с максимальным количеством колонок, которые может понадобиться проапдейтить:
str := []string {"name", "lastname"}
А дальше, в зависимости от условия, переприсваеваем в него срез с нужными элементами:
Если нам нужно только поле "name":
str = str[0:1]
И подставляем этот массив в функцию update, с тремя точками, которые обозначают переменное число аргументов:
num, err := o.Update(&device, str...)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы