Golang QueryRow().Сканирование() возвращает ошибку, если строка не существует

Я хочу получить одну строку из базы данных sql. Я использую следующий код:

var name string
row := db.Con().QueryRow("SELECT name FROM users WHERE id = 2;")
err := row.Scan(&name)

if err != nil {
    // log the error
}

например, если пользователь с id=2 не существует, метод Scan возвращает ошибку. Есть ли способ не генерировать ошибку, если строка не существует, потому что это абсолютно нормальный поток, и я не хочу регистрировать такие ошибки.

единственный способ, который я нашел, - использовать Query вместо QueryRow, но это не удобно, поскольку я должен добавить для строк.Next () { каждый раз, когда я хочу принести одна строка.

спасибо заранее.

1 ответов


просто проверка на ошибки вы не хотите логирования:

var name string
row := db.Con().QueryRow("SELECT name FROM users WHERE id = 2;")
err := row.Scan(&name)

if err != nil && err != sql.ErrNoRows {
    // log the error
}