В самом простом виде можно сделать так:
создаёшь пакет, к примеру db, в котором работаешь с соединением. Здесь же создать переменную-ссылку на *sql.DB
Создаёшь обычную публичную функцию, которая возвращает эту переменную.
Примерно так:
var connection *sql.DB
func GetConnection() *sql.DB {
return connection
}
При старте программы создаешь подключение. Далее из любого пакета импортируешь db и получаешь соединение: conn := db.GetConnection()
UPD: в функции GetConnection можно проверять текущее соединение и, при необходимости, восстанавливать его:
func GetConnection() *sql.DB {
connection.Ping()
return connection
}
См. /database/sql/