Heim >Backend-Entwicklung >Golang >Wie konvertiert man Datenbankzeilen in Go effizient in Strukturen?

Wie konvertiert man Datenbankzeilen in Go effizient in Strukturen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-17 12:48:26443Durchsuche

How to Efficiently Convert Database Rows to Structs in Go?

Zeilen-zu-Struktur-Konvertierung für Datenbankabrufe

In Datenbankzugriffsszenarien mit strukturierten Daten ist es oft wünschenswert, Datenbankzeilendaten in eine entsprechende Struktur zu konvertieren. Betrachten Sie die folgende Benutzerstruktur:

type User struct {
    Name  string
    Id    int
    Score int
}

Angenommen, eine Datenbanktabelle mit demselben Schema, wie können wir eine Datenbankzeile effizient direkt in eine Benutzerstruktur analysieren?

Effiziente Zeilen-zu-Struktur Konvertierung

Das Go-Datenbank/SQL-Paket bietet hilfreiche Beispiele, wie das Folgende zeigt 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)
}

Wenn Sie diese Prinzipien auf Ihren speziellen Fall anwenden, können Sie eine Zeile wie folgt in eine Benutzerstruktur umwandeln:

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

Das obige ist der detaillierte Inhalt vonWie konvertiert man Datenbankzeilen in Go effizient in Strukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn