Всем привет, сразу к делу. Код:
for _ = range time.Tick(3 * time.Second) {
fmt.Println("Making query")
rows, err := db.Query("SELECT id, addr, method FROM tasks")
defer rows.Close()
if err != nil {
fmt.Printf("Database error: %s\n", err.Error())
os.Exit(1)
} else {
fmt.Println("Filling queue")
queue := make(chan *Task)
for rows.Next() {
fmt.Println("Get next row")
var id int32
var addr string
var method string
if err := rows.Scan(&id, &addr, &method); err != nil {
fmt.Printf("Row error: %s\n", err.Error())
} else {
fmt.Printf("Add task for: %s\n", addr)
queue <- &Task{id, addr, method}
fmt.Println("Task added")
}
}
fmt.Println("Queue filled")
close(queue)
process(queue)
}
}
Читаю строки из БД, при первой итерации rows.Next() данные нормально извлекаются, но когда запихиваю полученный результат в channel, все просто встает на этом шаге.
queue <- &Task{id, addr, method}
Что я делаю не так?