#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...)