Задать вопрос
@VladimirDronik

Как передать информацию о соединении с БД в пакет golang?

Как с точки зрения архитектуры приложения на GO передать соединение с БД во все пакеты, где оно будет использоваться?

Допустим, сейчас я делаю в пакете main:

db, err := sql.Open("mysql", "database:password!@(127.0.0.1:3306)/database?parseTime=true")


и передаю соединение в пакет servers
servers.SocketsRun(db)

дальше в servers передаю в пакет connect
connect.run(db)

и так далее по цепочке...

А как правильно с точки зрения архитектуры использовать установленное соединение с БД во всех пакетах?
  • Вопрос задан
  • 295 просмотров
Подписаться 3 Простой Комментировать
Ответ пользователя Евгений Самсонов К ответам на вопрос (3)
bitniks
@bitniks
Go/PHP/Symfony developer
Можно использовать Dependency Injection, передавая соединение к БД в функцию создания экземпляра структуры
type Server struct {
    db *sql.DB
}

func NewServer(db *sql.DB) *Server {
    return &Server{
        db: db,
    }
}

func (s *Server) Run() {
    // s.db 
}
Ответ написан
Комментировать