Maison >développement back-end >Golang >Comment convertir efficacement les lignes d'une base de données en structures dans Go ?

Comment convertir efficacement les lignes d'une base de données en structures dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-17 12:48:26378parcourir

How to Efficiently Convert Database Rows to Structs in Go?

Conversion de ligne en structure pour les récupérations de bases de données

Dans les scénarios d'accès à une base de données avec des données structurées, il est souvent souhaitable de convertir les données des lignes de la base de données en une structure correspondante. Considérez la structure utilisateur suivante :

type User struct {
    Name  string
    Id    int
    Score int
}

En supposant une table de base de données avec le même schéma, comment pouvons-nous analyser efficacement une ligne de base de données directement dans une structure utilisateur ?

Rangée à structure efficace Conversion

Le package Go database/sql fournit des exemples utiles, comme en témoigne ce qui suit tests :

func TestQuery(t *testing.T) {
    type row struct {
            age  int
            name string
    }
    rows, err := db.Query("SELECT|people|age,name|")
    got := []row{}
    for rows.Next() {
            var r row
            err = rows.Scan(&r.age, &r.name)
            got = append(got, r)
    }
}

func TestQueryRow(t *testing.T) {
    var row struct {
            age  int
            name string
    }
    err = db.QueryRow("SELECT|people|age,name|age=?", 3).Scan(&row.age, &row.name)
}

En appliquant ces principes à votre cas spécifique, vous pouvez convertir une ligne en structure utilisateur comme suit :

var row struct {
    age  int
    name string
}
err = db.QueryRow("SELECT|people|age,name|age=?", 3).Scan(&row.age, &row.name)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn