Đi kiểm tra gói thường cung cấp manh mối về cách làm việc. Ví dụ, từ database/sql/sql_test.go
,
func TestQuery(t *testing.T) {
/* . . . */
rows, err := db.Query("SELECT|people|age,name|")
if err != nil {
t.Fatalf("Query: %v", err)
}
type row struct {
age int
name string
}
got := []row{}
for rows.Next() {
var r row
err = rows.Scan(&r.age, &r.name)
if err != nil {
t.Fatalf("Scan: %v", err)
}
got = append(got, r)
}
/* . . . */
}
func TestQueryRow(t *testing.T) {
/* . . . */
var name string
var age int
var birthday time.Time
err := db.QueryRow("SELECT|people|age,name|age=?", 3).Scan(&age)
/* . . . */
}
Trong đó, đối với câu hỏi của bạn, truy vấn liên tiếp thành một cấu trúc, sẽ dịch một cái gì đó như:
var row struct {
age int
name string
}
err = db.QueryRow("SELECT|people|age,name|age=?", 3).Scan(&row.age, &row.name)
Tôi biết rằng trông giống như giải pháp của bạn, nhưng nó quan trọng để chỉ cách tìm giải pháp.
sẽ như thế nào mà làm việc cho các giá trị null? – emostafa
@eslammostafa tại điểm nào mã này có thể có vấn đề với giá trị NULL? Ví dụ: – deFreitas
@deFreitas tại điểm số, tôi có nghĩa là các giá trị null đến từ cơ sở dữ liệu. – emostafa