Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukar Baris Pangkalan Data dengan Cekap kepada Struktur dalam Go?

Bagaimana untuk Menukar Baris Pangkalan Data dengan Cekap kepada Struktur dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-12-17 12:48:26378semak imbas

How to Efficiently Convert Database Rows to Structs in Go?

Penukaran Baris ke Struktur untuk Pengambilan Pangkalan Data

Dalam senario akses pangkalan data dengan data berstruktur, selalunya wajar untuk menukar data baris pangkalan data kepada struct yang sepadan. Pertimbangkan struct Pengguna berikut:

type User struct {
    Name  string
    Id    int
    Score int
}

Dengan mengandaikan jadual pangkalan data dengan skema yang sama, bagaimanakah kita boleh menghuraikan baris pangkalan data secara cekap terus ke dalam struct Pengguna?

Efficient Row-to-Struct Penukaran

Pakej pangkalan data/sql Go menyediakan contoh yang berguna, seperti yang dibuktikan oleh yang berikut ujian:

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)
}

Menggunakan prinsip ini pada kes khusus anda, anda boleh menukar satu baris kepada struct Pengguna seperti berikut:

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

Atas ialah kandungan terperinci Bagaimana untuk Menukar Baris Pangkalan Data dengan Cekap kepada Struktur dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn