Ответы пользователя по тегу Go
  • Как сделать ООП роутер в Go lang?

    @milast
    1) в HTTP есть нормальные параметры: example.com/class/method/?param1=a&param2=b
    Совершенно не вижу стеснения использовать их.
    2) В Go других вариантов работы с URL нет, а существующий вполне самодостаточный.
    Ответ написан
    Комментировать
  • Почему goto зло?

    @milast
    все пишут, что GOTO зло, но не всегда и не везде.
    Самое удачное его применение может быть для выхода из цикла.

    var a uint8
    var key uint8 = 7
    
    for  {
            switch a {
            case key-1:
                    fmt.Println("left")
            case key:
                    goto exit
            }
    
            a++
    }
    exit:
    fmt.Println("End")
    Ответ написан
  • Как запустить приложение Go через start-stop-deamon?

    @milast
    Быть может и не стоит делать из приложения демона?
    nohup /root/go/src/myapp/myapp &

    И всё, больше от терминала не зависим.
    Убить процесс так же просто:
    pkill myapp

    Или сперва узнаем pid процесса и по нему завершим его:
    ps -A | grep myapp

    увидим примерно следующее:
    1782 ? 00:00:09 myapp

    далее завершим процесс
    kill 1782

    И не нужны никакие демоны.
    Ответ написан
    Комментировать
  • Как организовать код на GO?

    @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/
    Ответ написан
    Комментировать