Примеры с реальных Golang собесов 2023: loopvar

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ส.ค. 2024
  • Задачи на loop variable.
    Клуб АйТи красавчиков с еженельными созвонами, приватным чатом для подписчиков и уникальным контентом - boosty.to/itkr...
    Пример номер 1: goplay.space/#...
    Пример номер 2: goplay.space/#...
    Пример номер 3: goplay.space/#...
    Common Mistakes Wiki page: github.com/gol...
    LoopvarExperiment: github.com/gol...
    Видео про задачи на append: • Примеры с реальных Gol...
    Видео про задачи на change pointer: • Примеры с реальных Gol...
    Видео про задачи на typed nil: • Примеры с реальных Gol...
    Видео про задачи на каналы и горутины: • Примеры с реальных Gol...
    Видео про задачи на GOMAXPROCS и defer: • Примеры с реальных Gol...
    Оставить заявку для участия в программе "Процент от ЗП" можно здесь - it-krasavchik.... - или на почту - it@krasavchik.club - или в телегу - t.me/itkrasavchik
    Клуб АйТи Красавчиков в дискорде - / discord

ความคิดเห็น • 39

  • @user-gx8gk9ur1n
    @user-gx8gk9ur1n 6 หลายเดือนก่อน +1

    Кстати,
    Previously, the variables declared by a "for" loop were created once and updated by each iteration. In Go 1.22, each iteration of the loop creates new variables, to avoid accidental sharing bugs.

    • @itkrasavchik
      @itkrasavchik  5 หลายเดือนก่อน

      Да, но не все еще перешли, я думаю.

  • @hound406
    @hound406 ปีที่แล้ว +4

    Я б накинул еще задачки на тему escape analysis.
    По сниппету рассказать, какие переменные уходят на кучу, например, и почему.
    И как избавиться от этого.

    • @itkrasavchik
      @itkrasavchik  ปีที่แล้ว

      Да вот как-то не дают примеры на это дело. Спрашивают про принципы и как проверить (gcflags "-m"), но без задач.

  • @kamtarmamatkulov6199
    @kamtarmamatkulov6199 ปีที่แล้ว +4

    Тут кстати не совсем очевидный момент в первой задаче. Почему именно выводится пять пятерок, а не пять четверок. Ведь по идее i заканчивается на 4. У меня это отдельно спрашивали. Ведь когда надо исправить вывод, i идет от 0 до 4. А в целом очень крутой контент Евгений)

    • @itkrasavchik
      @itkrasavchik  ปีที่แล้ว

      спасибо ) счетчик сначала увеличивается, а потом делается выход из цикла после проверки условия

    • @kamtarmamatkulov6199
      @kamtarmamatkulov6199 ปีที่แล้ว +3

      @@itkrasavchik Да, верно конечно) цикл состоит из трех частей - init(работает до итерации), condition(проверяется до итерации) и post(срабатывает после итерации). Вот post у нас отрабатывает. И i=5. Если кому то нужно прям из документации)) От меня просили именно такой ответ. Коллегам на будущее) Всем побольше проходных собесов)

  • @user-fh6xg9pn3y
    @user-fh6xg9pn3y 11 หลายเดือนก่อน

    Я бы просто sleep(i) поставил внутри каждой горутины. Горутину все равно стопать придётся. Вопрос только какие накладные расходы, если слипом)

  • @ArtemCYOU
    @ArtemCYOU ปีที่แล้ว

    а еще значения в слайс можно запихать и потом поочередно вывести)

    • @itkrasavchik
      @itkrasavchik  ปีที่แล้ว

      Слайс не безопасен для аппенда из горутин 😉

  • @novychok_novychok
    @novychok_novychok ปีที่แล้ว

    Все сложнее и сложнее :)
    Спасибо за панику :D

    • @itkrasavchik
      @itkrasavchik  ปีที่แล้ว +1

      То ли еще будет )

  • @danil4095
    @danil4095 ปีที่แล้ว

    для участия в программе "процент от зп" нужно знать английский?

  • @yarbersheer8559
    @yarbersheer8559 ปีที่แล้ว

    А настоящий синьор (помидор) ещё узнаёт скольки ядерная у нас система и gomaxproc выставит))

  • @hound406
    @hound406 ปีที่แล้ว

    Каналы или wg.Wait в цикле после запуска горутины?
    Если каналы то писать сначала в канал значение переменной из цикла, а в горутине уже читать из этого канала и кидать в stdout

    • @itkrasavchik
      @itkrasavchik  ปีที่แล้ว

      Если ты в канал пишешь из горутины - то порядок будет все равно случайный. Или я не понял ) Тогда покажи код плз )

    • @hound406
      @hound406 ปีที่แล้ว

      @@itkrasavchik Каналы: #4heimODSA7A
      Но выглядит ужас имхо
      с wg: #u98CjhAlYJ0
      но все равно что-то смущает
      ps. линки на goplay с прямыми ссылки, видимо, комент удаляется

    • @itkrasavchik
      @itkrasavchik  ปีที่แล้ว +2

      @@hound406 видимо, ща тоже попробую:
      Каналы - goplay.space/#4heimODSA7A
      WG: goplay.space/#u98CjhAlYJ0
      можно еще подумать как сделать без блокировок горутин )

    • @hound406
      @hound406 ปีที่แล้ว

      @@itkrasavchik sleep'ом ?)))

    • @hound406
      @hound406 ปีที่แล้ว +1

      #F4Rb3f5G7ks вот еще вариант)

  • @ndisu3847
    @ndisu3847 ปีที่แล้ว

    К сожалению или к счастью, в go 1.21 изменят семантику переменных цикла(

    • @itkrasavchik
      @itkrasavchik  ปีที่แล้ว

      в 1.22, насколько я понял. В 1.21 оно все еще экспериментально и выключено по умолчанию.

  • @andreykyzn
    @andreykyzn ปีที่แล้ว

    Канал использовать чтобы отсортировать задачи печати.

  • @user-ws2gg2jh2z
    @user-ws2gg2jh2z ปีที่แล้ว

    wg.WaitGroup писать внутри цикла, но до запуска горутин?

    • @itkrasavchik
      @itkrasavchik  ปีที่แล้ว

      Да, есть уже такой вариант - goplay.space/#u98CjhAlYJ0 - как насчет того, чтоб не блокировать горутины? )

    • @hound406
      @hound406 ปีที่แล้ว

      @@itkrasavchik те гортины, которые пораждаются в цикле не блокируются.
      Блокируется только main горутина, ты ее имеешь ввиду?

    • @itkrasavchik
      @itkrasavchik  ปีที่แล้ว +1

      @@hound406 переформулирую ) не трогать планировщик и оставить Wait вне цикла )

  • @user-yt2sb9tl3p
    @user-yt2sb9tl3p ปีที่แล้ว

    В 3 задачке runtime.Gosched() добавить

    • @itkrasavchik
      @itkrasavchik  ปีที่แล้ว

      Красавчик, но здесь успели чуть раньше ) th-cam.com/video/QdfiU1khTTs/w-d-xo.html&lc=UgzYd6xB0q2ykOjO6X94AaABAg.9ra4mY1Y_zz9ra7nSg6XZN

    • @ivangurin7062
      @ivangurin7062 ปีที่แล้ว

      @@itkrasavchik А можете объяснить почему runtime.Gosched() приводит к такому поведению?

    • @itkrasavchik
      @itkrasavchik  ปีที่แล้ว +2

      ​@@ivangurin7062 goplay.space/#F4Rb3f5G7ks - runtime.Gosched переключает на горутину с принтом сразу после ее создания, потому что другой, на которую можно переключиться нету.

    • @ivangurin7062
      @ivangurin7062 ปีที่แล้ว

      @@itkrasavchik Спасибо. Понятно.

    • @insentijke
      @insentijke ปีที่แล้ว

      у меня все равно в некоторых случаях выводит не по порядку@@itkrasavchik