@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)

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

А как правильно с точки зрения архитектуры использовать установленное соединение с БД во всех пакетах?
  • Вопрос задан
  • 266 просмотров
Пригласить эксперта
Ответы на вопрос 3
@VladimirDronik Автор вопроса
Вот такой вариант будет правильным ?
https://fooobar.com/questions/10380979/sharing-a-g...
Ответ написан
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 
}
Ответ написан
Комментировать
risentveber
@risentveber
fullstack web developer
Используй DI и IoC
Run-time: https://github.com/uber-go/dig
Compile-time: https://github.com/google/wire
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы