Если брать за основу ваш код - примерно так можно сделать
package main
import "fmt"
type User struct {
UserName string
Category string
Age int
}
func main() {
users := []User{
User{UserName: "Bryan", Category: "Human", Age: 33},
User{UserName: "Jane", Category: "Rocker", Age: 25},
User{UserName: "Nancy", Category: "Mother", Age: 40},
User{UserName: "Chris", Category: "Dude", Age: 19},
User{UserName: "Martha", Category: "Cook", Age: 52},
}
// подключаетесь к базе
db, _ := sql.Open(...)
defer db.Close()
for _, user := range users {
fmt.Println(user)
// делаете запрос в базу
db.Exec("INSERT INTO users (name, category, age) VALUES ($1, $2, $3)", user.UserName, user.Category, user.Age)
}
}
Если данных для вставки в базу будет много - такой вариант будет тормозить, в этом случае лучше делать вставку в транзакции
tx, _ := db.Begin() // начинаете транзакцию
for _, user := range users {
fmt.Println(user)
// делаете запрос в базу (тут уже не db, а tx.Exec)
tx.Exec("INSERT INTO users (name, category, age) VALUES ($1, $2, $3)", user.UserName, user.Category, user.Age)
}
tx.Commit() // завершаете транзакцию, данные сохраняются в базе