DATABASE/SQL Cơ bản CA 02 / 08

Vì sao phải Next() trước khi Scan()?

Hệ thống đăng ký môn học sinh viên:

rows, err := db.Query("SELECT student_id, course_code FROM enrollments WHERE semester = ?", "2026-1")
defer rows.Close()
for rows.Next() {
    var sid, course string
    rows.Scan(&sid, &course)
    fmt.Println(sid, course)
}

Vì sao phải gọi rows.Next() trong vòng lặp trước khi Scan, thay vì Scan thẳng kết quả Query?