Apabila bekerja dengan pertanyaan pangkalan data, adalah perlu untuk mendapatkan semula keputusan dan menukarnya kepada struktur data yang mudah. Dalam Go, pakej pangkalan data/sql standard menyediakan jenis Rows untuk mewakili set baris yang dikembalikan daripada pertanyaan. Walau bagaimanapun, cabaran timbul apabila seseorang ingin mencipta peta daripada baris ini, dengan kunci peta ialah nama lajur dan nilainya ialah nilai baris yang sepadan.
Untuk menangani isu ini, menggunakan pakej sqlx adalah disyorkan . Berikut ialah contoh yang menunjukkan cara menukar baris kepada kepingan peta menggunakan sqlx:
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx" ) type Place struct { ID int Telcode int } func main() { db, err := sqlx.Open("mysql", "user:password@tcp(localhost:3306)/database") if err != nil { fmt.Printf(err) return } rows, err := db.Query("SELECT * FROM place ORDER BY telcode ASC") if err != nil { fmt.Printf(err) return } places := []map[string]interface{}{} for rows.Next() { rowMap := make(map[string]interface{}) if err := rows.MapScan(rowMap); err != nil { fmt.Printf(err) return } places = append(places, rowMap) } fmt.Println(places) }
Dalam contoh ini, fungsi sqlx.MapScan digunakan untuk mengimbas setiap baris ke dalam peta. Potongan peta yang terhasil disimpan dalam pembolehubah tempat dan dicetak. Pendekatan ini membolehkan perwakilan data baris yang lebih fleksibel, dengan nama lajur menjadi kunci peta dan nilai yang sepadan boleh diakses melalui antara muka peta.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Baris Pangkalan Data dengan Cekap kepada Secebis Peta dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!