кучу функций куда нужно…
Или можно его сделать переменной пакета и просто ссылаться эту переменную где нужно?
Нельзя контекст сделать глобальной переменной ибо контекст зависит от времени жизни сущности, которая вызывает ваш код....
Понимаю. Хотел в нужном месте потом этот контекст просто cancel’ить
прилетел запрос следом и перезаписал контекст ?
Нет, это скорее глобальный контекст, который отвечает за graceful shutdown Не контекст запроса
Это нужно уточнять
Короче через функцию таскай аргументом и не будет вопросов. Просто контест в го есть тупо property bag, но на кой то хрен в него же решили пихать cancellation token и поделали апишку под это дело и получилась какая каша ....
Первопричина контекста - отмена операций и делайны, прокидывать через него значения вещь очень ситуативная и близкая к анти-паттерну
Да все прокидывают, например куча http фреймворков.
А если все с крыши прыгать будут, мы тоже будем? 😄 Но справедливости ради соглашусь, что context.WithValue подразумевает использование контекста для прокидывания разносортных "глобально-локально" доступных данных Для неискушенных JavaEE - что-то типа @RequestScoped бинов
Потому что это удобно и относится к запросу, а не хендлеру, это не проблема сама по себе, проблема это когда через него прокидывать то что должно быть аргументом функции. Другое дело отмена операций, отмена через контекст наверное самая удобная реализация которую я видел
А почему token отмены НЕ должен быть отдельным аргументом , а должен быть впихан в контекст ?) Он особенный?)
Да, он особенный, это его предназначение) Прочитал что такое CancelationToken, контекст его не прокидывает, его в принципе не существует, context полностью заменяет его
Ну да, заменяет. Но одновременно этот же контекст реализует property bag паттерн... Где не только такие вот токены могут быть, одновременно (!) с этим этот класец имеет api для работы с токенами отмены (хм?)
property bag обычно стараются типизировать, его логичнее реализовывать заэмбедив контекст в свой собственный контейнер
Ну вот контекст го не следует этому.
Property bag выглядит как то что стоит реализовать самостоятельно и кидая свою структуру с нужными полями, тем же вторым аргументом
Покуда есть контекст который уже имеет это никто не будет заморачиваться.
Обсуждают сегодня