Как организовать код на GO?

На How to write code есть примеры создания своих package.

Приложение работает с MySQL и состоит из main.go и пары package.

Вопрос - как сделать так чтобы была одна переменная (или пакет с методом получения), содержащая соединение с MySQL и к ней можно было обратиться из package'ов.
  • Вопрос задан
  • 2597 просмотров
Решения вопроса 2
@milast
В самом простом виде можно сделать так:
создаёшь пакет, к примеру 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/
Ответ написан
Комментировать
@cybervito21 Автор вопроса
Код на GitHub
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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