Хранить и передавать переменные аргументы в golang?

#go #variadic-functions

#Вперед #переменные-функции

Вопрос:

Вот пример использования: я пытаюсь динамически создавать переменные аргументы (что означает, что мне нужно их сохранить), затем мне нужно передать их переменной функции. Функция имеет подпись ниже. И ниже приведен код сбоя. Как правильно это сделать?

 // variadic function
func Select(dest interface{}, query string, args ...interface{}) error

//failing code
var args = make([]interface{}, 0, 5)

func add(params ...interface{}) {
   args = append(args, params)
}

Select(amp;dest, query, args...)

//error is sql: converting Exec argument #0's type: unsupported type []interface {}, a slice
  

Ответ №1:

Вы также должны применить оператор распространения к функции add. Код ошибки кажется немного странным, но правильный код должен выглядеть так:

 var args = make([]interface{}, 0, 5)

func add(params ...interface{}) {
   args = append(args, params...)
}

Select(amp;dest, query, args...)