Как с точки зрения архитектуры приложения на 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)
и так далее по цепочке...
А как правильно с точки зрения архитектуры использовать установленное соединение с БД во всех пакетах?