Ответы пользователя по тегу Go
  • Какой посоветуете план обучения Go?

    @iburanguloff
    Fullstack web developer
    Рекомендую для начала взять книгу Донована - Язык программирования Go и повторять описанные примеры, затем реализовать свой собственный проект - например микросервис авторизации и аутентификации или систему распределенного кеша - по мере реализации своего кода будут возникать вопросы, которые реально нужны в продакшне. Это была программа "вката" у меня. Вообще чем больше практиковаться, тем лучше
    Ответ написан
    Комментировать
  • Как с помощью telegram-bot-api получить два значения?

    @iburanguloff
    Fullstack web developer
    В цикле for-range с использованием каналов при каждой итерации будет получаться только одно значение из канала. Чтобы получить несколько значений, нужно вручную производить присваивание их переменным, а цикл использовать другой, например обычный for. Примерно такой цикл результат должен вас устроить:
    for {
    		upd1 := <-updates
    		upd2 := <-updates
    		upd3 := <-updates
    		
    		...
    		
    		
    		if upd1.Message != nil {
    			command1 := upd1.Message.Text
    			...
    		}
    		if upd2.Message != nil {
    			command2 := upd2.Message.Text
    			...
    		}
    	}


    Здесь стоит обратить внимание на updN := <-updates - эта инструкция позволяет вручную вычитывать из канала данные.
    Еще лучше использовать updN, ok := <-updates - в этом случае переменная ok будет принимать булево значение, которое будет равно false в случае закрытия канала. Рекомендую изучить go channels, чтобы это не вызывало затруднений, т.к. в языке Go это один из основоплагающих инструментов для работы с горутинами. Ну и break в цикле нужно не забыть
    Ответ написан
    Комментировать
  • Как принудительно закрыть соединение без ожидания полного ответа запроса?

    @iburanguloff
    Fullstack web developer
    Для этого отлично подойдут контексты (пакет context) в связке с функцией http.NewRequestWithContext, который принимает контекст одним из параметров. В момент, когда вы поймете, что запрос следует прервать - можно отменить контекст и соединение прервется. Например функция context.WithCancel создает контекст и возвращает кроме него еще функцию, вызвав которую контекст можно закрыть
    Ответ написан
  • Что за одинарные кавычки и как они преобразуются в число?

    @iburanguloff Автор вопроса
    Fullstack web developer
    Ответ написан
    Комментировать