Сканирование массива типизированного поля БД в массив / фрагмент в Golang - PullRequest
0 голосов
/ 28 февраля 2019

ТЛ;dr

У меня есть таблица sql users, которая включает в себя поле массива.Как я могу отсканировать его в переменную в Голанге?Мой подход:

var id        int
var username  string
var activites []string
row := db.QueryRow("SELECT id, username, activities FROM users WHERE id = 1")
err := row.Scan(&id, &username, &activites)

Отлично работает для идентификатора, имени пользователя.

1 Ответ

0 голосов
/ 28 февраля 2019

Как уже указывалось @mkopriva, это можно сделать с помощью метода StringArray или с помощью более гибкого метода Array (так как он принимает интерфейс в качестве аргумента), оба из которых находятся в пакете "github.com/lib/pq".

Кроме того, рекомендуется использовать подготовленные заявления.

Полный пример:

var id int
var username string
var activities []string

sqlStatement := `
    SELECT
        id,
        username, 
        activities 
    FROM 
        users 
    WHERE 
        id = $1
`

stmt, err := db.Prepare(sqlStatement)
if err != nil {
    // handle err
}

defer stmt.Close()

row := stmt.QueryRow(1)

err = row.Scan(
    &id,
    &username,
    pq.Array(&activities) // used here
)

if err == sql.ErrNoRows {
    // handle err
}

if err != nil {
    // handle err
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...