Примеры с реальных Golang собесов 2023: каналы и горутины

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 ก.ค. 2023
  • Задачи на channels and goroutines.
    Клуб АйТи красавчиков с еженельными созвонами, приватным чатом для подписчиков и уникальным контентом - boosty.to/itkrasavchik
    Пример номер 1: goplay.space/#RaCGAY2Vp1a
    Пример номер 1 с доп. for-loop горутиной в начале: goplay.space/#unSGmgtIk14
    Пример номер 1 с решением: goplay.space/#lRJS0imyS3x
    Пример номер 2: goplay.space/#xVWXtJlZgt6
    Пример номер 3: goplay.space/#JUS8ntMyR4M
    Пример номер 4: goplay.space/#BEu-ikVTLGT
    0:07 - пример номер 1
    9:42 - пример номер 2
    11:17 - пример номер 3
    13:09 - пример номер 4
    Видео про задачи на append: • Примеры с реальных Gol...
    Видео про задачи на change pointer: • Примеры с реальных Gol...
    Видео про задачи на typed nil: • Примеры с реальных Gol...
    Видео про задачи на loopvar: • Примеры с реальных Gol...
    Видео про задачи на GOMAXPROCS и defer: • Примеры с реальных Gol...
    Оставить заявку для участия в программе "Процент от ЗП" можно здесь - it-krasavchik.zenclass.ru/ - или на почту - it@krasavchik.club - или в телегу - t.me/itkrasavchik
    Клуб АйТи Красавчиков в дискорде - / discord

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

  • @slavapinchuk4829
    @slavapinchuk4829 4 หลายเดือนก่อน +2

    Уроки просто шикарные!!!

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

    Спасибо, очень интересное и полезное видео

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

    Смутила передача wg по ссылке. Думал там собака порылась. А задачи реально очень интересные

  • @Edvard-Aliev
    @Edvard-Aliev ปีที่แล้ว +3

    Привет, два года назад смотрел вакансии golang на hh и было всего 250 вакансий сейчас больше 1000+ вот теперь можно изучать golang активно, книги по Go и микросервисам уже купил.

    • @sergei9701
      @sergei9701 9 หลายเดือนก่อน

      Сейчас уже нужно Rust учить

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

    Вместо range можно модифицировать исходный for
    for {
    br := false

    select {
    case v, ok :=

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

      Можно, спасибо, но выглядит довольно сложно в дальнейшей поддержке.

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

      Согласен. Ну это если интервьюеры докопаются)

    • @JIexaPol
      @JIexaPol 9 หลายเดือนก่อน

      А что мешает сделать один break для for? "Loop:" перед for и далее "break Loop"

  • @Damir-nl6tf
    @Damir-nl6tf 7 หลายเดือนก่อน

    Здравствуйте! Недавно начал изучать Golang, скажите пожалуйста, первую задачу спрашивают у Джунов, Миддлов или Синьеров?

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

      и там, и там может быть

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

    В горутину передается параметр group, а используется внешняя переменная wg. Должно конечно работать и так, но это очевидная ошибка.

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

      Согласен, красавчик!

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

    Хотелось бы добавить по поводу последней задачи. Ещё спрашивают как исправить код, чтобы вывод был через 3 секунды,а не через 6

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

      Есть такое. Если есть готовое решение - велкам )

    • @user-gi4th1yv2w
      @user-gi4th1yv2w ปีที่แล้ว +3

      @@itkrasavchik
      package main
      import "time"
      func worker1() chan int {
      ch := make(chan int)
      go func() {
      time.Sleep(4 * time.Second)
      ch

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

      Красавчик! 🔥 Положил на goplay - goplay.space/#mDQJ9FR2eLF :)

  • @alexinAtoRudakov
    @alexinAtoRudakov 11 หลายเดือนก่อน

    Не очень понятно с примером номер#2 с инициализированным каналом, там же по идеи утечка горутин должна произойти. Пишем мы из 3 горутн в цикле for, а читаем только из одной. Но го почему то этого не показывает). Можно скопировать fmt.Println (

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

      две горутины заблокируются до первого (и единственного чтения), потом одна из них успеет записать, вторая останется висеть на попытке записи. Но никакого дедлока тут нет - main подождет 2 секунды и выйдет.
      Паники при чтении тоже быть не должно. Если у тебя есть - покажи пример.

    • @alexinAtoRudakov
      @alexinAtoRudakov 11 หลายเดือนก่อน

      @@itkrasavchik да, паники не будет. Получился классический пример утечки горутин под названием "забытый отправитель", прям как когда я девушек на свидание зову). Получается что го будет фаталить ерор о deadlocke , только если заблокируется на чтение/запись в канал main горутина, а на "дочерние" ему плевать

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

      @@alexinAtoRudakov 😂😂😂👍

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

    В этот раз простенькие вышли)

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

      Кому как )

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

      @@itkrasavchik надо просто один раз натрахаться с каналами и селектами, тогда будет простенько)))

  • @andreykyzn
    @andreykyzn 10 หลายเดือนก่อน +1

    Мне такую задачу задавали 🤣 в Авито чтоли

  • @v.savostin
    @v.savostin 5 หลายเดือนก่อน

    канал блокируется на 14 строке, а не на 15. Это важно понимать. Вот если бы он был с буфером=1, тогда да. Я про cmd.1 пример

    • @v.savostin
      @v.savostin 5 หลายเดือนก่อน

      func run() {
      ch := make(chan string)
      go func() {
      time.Sleep(time.Second)
      fmt.Println("before read 1")
      m :=

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

      Блокируется горутина, а не канал ;) и тогда уж на каждой строчке (14 и 15), пока горутина не прочитает из него. Для первого чтения у нее есть время напечатать прочитанное, для второго уже нет.