Я создал функцию, которая выполняет запрос в базе данных mysql. Я использую этот пакет "github.com/go-sql-driver/mysql"
но если я запускаю это:
...
err := database.ExecuteSql("INSERT INTO xxx(field1, field2, field3) VALUES(?, ?, ?)", "field1", 123, time.Now())
...
func ExecuteSql(cmd string, , args ...interface{}) error {
ctx := context.Background()
_, err := db.ExecContext(ctx, cmd, args)
ctx.Done()
...
}
он возвращает мне «sql: преобразование аргумента типа $ 1: неподдерживаемый тип [] интерфейс {}, часть интерфейса»
Ты прав!!! спасибо, опубликуйте это, и я отмечу как правильное!!
Когда вы выполняете метод следующим образом:
_, err := db.ExecContext(ctx, cmd, args)
вы передаете args
только как один []interface{}
аргумент. Срезы не поддерживаются в качестве аргументов для метода ExecContext
, если только это не []byte
.
Вам нужно использовать оператор распаковки с args
:
_, err := db.ExecContext(ctx, cmd, args...)
ты пробовал
_, err := db.ExecContext(ctx, cmd, args...)
?