go get github.com/jmoiron/sqlx
go get -u github.com/go-sql-driver/mysqlimport (
  _ "github.com/go-sql-driver/mysql"
  "github.com/jmoiron/sqlx"
)// Строка подключения к базе данных
 dsn := "user:password@(localhost:3306)/database_name"
 // Инициализируем подключение к базе данных
 db, err := sqlx.Connect("mysql", dsn)
 if err != nil {
  panic("Failed to connect to the database: " + err.Error())
 }
 // Проверяем, что подключение к БД еще рабочее
 err = db.Ping()
 if err != nil {
  panic("Failed to ping the database: " + err.Error())
 }db, err := sqlx.Connect("postgres", "user=foo dbname=bar sslmode=disable")// Драйвер MySQL
import _ "github.com/go-sql-driver/mysql"
// Драйвер PostgreSQL
import _ "github.com/lib/pq"rows, err := db.Query("SELECT id, name, price FROM products")
 if err != nil {
  // Обработка ошибок
 }
 for rows.Next() {
  var id int
  var name string
  var price float64
  err = rows.Scan(&id, &name, &price)
  if err != nil {
   // Обработка ошибок
  }
  
  fmt.Println(id, name, price)
 }type Product struct {
 ID    int     `db:"id"`
 Name  string  `db:"name"`
 Price float64 `db:"price"`
}
 var products []Product
 // Из базы данных извлекаются все продукты
 err = db.Select(&products, "SELECT id, name, price FROM products")
 if err != nil {
  // Обработка ошибок
 }
 fmt.Println(products)var product Product
 // Из базы данных извлекается только одна строка
 err = db.Get(&product, "SELECT id, name, price FROM products where id = 1")
 if err != nil {
  // Обработка ошибок
 }
 fmt.Println(product)// Создаем новый продукт
 var product Product = Product{
  Name:  "New Product",
  Price: 350,
 }
 // Используя сканирование структуры, вставляем его в таблицу продуктов
 response, err := db.NamedExec("INSERT INTO products (name, price) VALUES (:name, :price)", &product)
 if err != nil {
  // Обработка ошибок
 }
 // Получаем последний вставленный идентификатор
 lastId, err := response.LastInsertId()
 if err != nil {
  // Обработка ошибок
 }
 // Получаем число соответствующих строк
 affectedRow, err := response.RowsAffected()
 if err != nil {
  // Обработка ошибок
 }
 fmt.Println(lastId, affectedRow)var product Product
 // Привязываем параметр идентификатора
 err = db.Get(&product, "SELECT id, name, price FROM products where id = ?", 1)
 if err != nil {
  // Обработка ошибок
 }
 fmt.Println(product)