TGViewer
Igor Panasyuk | IGORoutine Programming Igor Panasyuk | IGORoutine Programming @igoroutine · 2.22K subscribers
Post #185 3.18K

Forwarded from igoroutine.courses

Разбор задачи с порядком вызова функций в select

Что будет выведено в stdout после запуска кода?

Go Playground

На первый взгляд может показаться, что здесь вывод недетерминирован. На самом деле мы имеем дело с очень тонкой гарантией из стандарта языка Go:

For all the cases in the statement right-hand-side expressions of send statements are evaluated exactly once, in source order, upon entering the "select" statement.


Это означает, что перед попыткой записи в ch1 и ch2 сперва будут вычислены функции get и getWithPanic, причем в порядке расположения в исходном коде.

Таким образом, будет выведено igoroutine courses, вывод из panic не учитывается, поскольку он пишется в stderr, а не stdout.

На практике это означает, что нужно быть готовым к тому, что функция в case может быть вызвана, но её возвращаемые значения и side-эффекты не будут использованы в соответствующей ветке.
  • 🤯 26
  • 😱 5
  • 💯 4
  • ✍ 2
More from @igoroutine
  1. Sep 29, 2026Отправляешь очередной промпт нейронке и ловишь себя на мысли: «Я - какой-то ненастоящий пр…
  2. Jul 13, 2026Доброго вечера и хорошей недели)) На ней выйдут два новых видео. Рассвет сегодня не заснял…
  3. Jul 6, 2026Доброе утро и хорошей недели
  4. Jul 4, 2026AI заменит образование? В последнее время в индустрии очень остро стоит вопрос о смысле тр…
  5. Jul 1, 2026Без этих знаний твой Go-вайбкод положит прод | Пакет sync изнутри Давно обещал выпустить п…
  6. Jun 29, 2026Доброе утро и хорошей недели
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →