Ответы пользователя по тегу Go
  • Как вытащить поля из запроса в pgx?

    Eugene-Usachev
    @Eugene-Usachev
    struct User {
        id int
        name string
        level int
        currentExp int
        maxExp int
    }
    
    var user User
    
    row := ... // Ваш запрос
    if err := row.Scan(&user.id, &user.name, &user.level, &user.currentExp, &user.maxExp); err != nil {
        // обработайте ошибку
    }
    
    // тут поля у user заполнены


    Вы не приложили структуру, поэтому мне пришлось её выдумать. Используйте метод Scan у row. Он принимает ссылки на переменные для вставки значений. Значения вставляет в том порядке, в котором они возвращаются, за этим нужно следить.

    Также уберите картинку или спрячьте её в спойлер. Я уже не помню номер правила, но Вы его нарушаете. У некоторых людей слабый интернет.
    Ответ написан
    Комментировать
  • Как динамически отправлять данные на клиент с golang сервера?

    Eugene-Usachev
    @Eugene-Usachev
    Способов много. Можно использовать или SSE, или http2, или long Polling, или short Polling или Websockets. Причём последний вариант самый предпочтительный почти всегда, так как является очень популярным и шустрым. Замеры я не проводил, но на бумаге протокол Websockets имеет наименьший оверхед из всех способов. Реализаций Websocket очень много для Go.

    Если проект маленький, берите Gorilla-websocket, или fiber-websocket или fasthttp-websocket (зависит от того, какую библиотеку вы используете). Эти технологии очень простые и удовлетворяют почти всем требованиям. В крупных проектах я бы предложил использовать или centrifuge, или centrifugo. centrifuge - это хорошо оптимизированная библиотека, а centrifugo - готовое решение. Они посложнее, но уже оптимизированы и предоставляют fallbacks, если клиент не способен установить websocket.

    Если у вас есть специфичные требования, вам следует указать это, потому что сейчас приходится "тыкать в небо".
    Ответ написан
    Комментировать