Ответ
Для чтения 4 запросов из Batch в Go можно использовать Batch.Get() с индексами или итерацию. Пример:
batch := &pg.Batch{}
batch.Queue("SELECT * FROM users WHERE id = $1", 1)
batch.Queue("SELECT * FROM products WHERE id = $1", 42)
batch.Queue("SELECT * FROM orders WHERE id = $1", 7)
batch.Queue("SELECT name FROM categories WHERE id = $1", 3)
results, err := db.SendBatch(ctx, batch)
defer results.Close()
var user User
err = results.QueryRow().Scan(&user.ID, &user.Name)
var product Product
err = results.QueryRow().Scan(&product.ID, &product.Name)
var order Order
err = results.QueryRow().Scan(&order.ID, &order.Amount)
var categoryName string
err = results.QueryRow().Scan(&categoryName)
Важно:
- Читать результаты в том же порядке, что и запросы
- Всегда закрывать Batch с
defer results.Close() - Проверять ошибки после каждого
QueryRow()