СЛАЙСЫ и МАССИВЫ golang (ЗАЧЕМ это сделали?)

Поділитися
Вставка
  • Опубліковано 20 гру 2024

КОМЕНТАРІ • 39

  • @gopher_land
    @gopher_land  7 місяців тому +6

    🚨Комьюнити, дз, курс golang и backend разработки - t.me/gopher_land 🚨

  • @FedemSerrev
    @FedemSerrev 5 місяців тому +6

    Брат, не забрасывай канал, уже давно не было роликов. У тебя отличная подача и хороший монтаж, объясняешь все супер понятно!

  • @andreyhetag8100
    @andreyhetag8100 4 місяці тому +2

    Брат, пожалуйста, не оставляй канал. Просмотры придут. У тебя лучшие ролики, что я только находил: самое понятное и лаконичное объяснение, крутейший визуал. Представляю, сколько сил и времени на это уходит. Может, забабахать бусти, с удовольствием поддержу рублём

  • @YaHoo4598
    @YaHoo4598 6 місяців тому +5

    Ответ в конце видео, eсли кому-то интересно.
    При s2[0:2] мы получаем урезанный массив, но элементы внутри массива имеют те же ссылки (или адреса, кому как удобнее) в памяти, что и у элементов исходного массива. В итоге мы получаем массив длиной равной 2, а вместимость как у исходного массива, то есть вместимость равна 5, и получается такой массив [73, 98, пусто, пусто, пусто]. Когда отрабатывает данная строчка кода --> s2 = append(s2, 444), мы в конец урезанного массива добавляем значение 444, НО!! это значение добавляется в пустую ячейку урезанного массива, а сама эта пустая ячейка, как я писал выше, имеет ту же ссылку(адрес), что и ячейка хранящиеся под данным индексом у исходного массива, то есть при изменении этой ячейки в урезанном массиве мы также затронем данную ячейку у исходного массива. Таким образом, урезанный массив будет выглядеть так --> [73, 98, 444, пусто, пусто], а исходный так --> [73, 98, 444, 61, 96].
    Во втором же случае, когда мы используем s2[0:2:2], мы ограничиваем вместимость урезанного массива до двух и получается такой массив --> [73, 98], НООО!! эти два элемента все еще имеют ссылку(адрес) на элементы исходного массива. Весь прикол происходит при использовании append, он просто создает копию массива и добавляет некое кол-во пустых ячеек, если вместимости не хватает, об этом как раз таки говорилось в этом видео. Итог, у нас получится новый массив с элементами, у которых свои ссылки(адреса) --> [73, 98, 444, некое кол-во пустых ячеек созданных заранее для оптимизации].
    Надеюсь понятно расписал, а если кто-то не понял, то посмотрите видео про указатели.
    Я вот на JavaScript (TypeScript) уже сижу почти три года и работаю Фронтом на React, но решил поизучать гошку ради интереса, т.к захотелось чего-то новенького.
    Отличная и интересная подача материала, продолжай в том же дуxe и удачи в развитии канала)

    • @ronxiy8855
      @ronxiy8855 Місяць тому

      Еще в дополнение. Вместимость считается от индекса среза s2 , т.е. в данном случае s2[0:2] вместимость считается с 0 и равна 5. Если указать s2[1:2] счет будет с индекса 1 и вместимость уже будет равна 4. Как и сказано выше это связано потому что урезанный массив ссылается на основной и индексы до начального не входят в этот интервал

  • @davdev05
    @davdev05 6 місяців тому +6

    Крутой монтаж, крутые превью, крутая подача, где лайки? Где просмотры? Надеюсь придут, а то несправедливо, удачи каналу в развитии, жду про параллелизм и конкурентность)

  • @lisov1k492
    @lisov1k492 2 місяці тому +2

    Зря забросил, оч круто !

  • @МатвейУглицких-щ9с
    @МатвейУглицких-щ9с 7 місяців тому +6

    Спасибо за новый ролик, лучший ютуб канал)

  • @Allsee77
    @Allsee77 7 місяців тому +2

    Супер канал, не забрасывай!

  • @shxckwave
    @shxckwave 5 днів тому

    спасибо большое!

  • @Onebeardedmarketeur
    @Onebeardedmarketeur 7 місяців тому +4

    Класс, понятно

  • @koreshochek-
    @koreshochek- 2 місяці тому

    Для тех кто не состоит в его тг, он там писал 24 сентября, что он начал проходить месячный курс по System Design, поэтому я думаю возможно после 24 октября стоит ждать новых видео

  • @saitaro
    @saitaro 7 місяців тому +1

    Супер, продолжай!

  • @tron24
    @tron24 6 місяців тому

    Продалжай в том же духе, подписался жду новые видео!

  • @Go_Dnota
    @Go_Dnota 6 місяців тому +1

    больше роликов!!!!!

  • @dobrMAV
    @dobrMAV 3 місяці тому

    Будет ли продолжение ?

  • @АртемМингажев-п4п
    @АртемМингажев-п4п 5 місяців тому +2

    привет, сделай пж норм гайд на час два чтобы было понятно, ты хорошо объясняет, а другие бьют много воды и плохо объясняют

    • @mkrtumyanis
      @mkrtumyanis 5 місяців тому

      Он проводит платные курсы. В каждом ролике он делает рекламу своих курсов которая начинается со слов "если вы цените свое время..."

  • @ИгнатьевДима
    @ИгнатьевДима 24 дні тому

    Эхх,возвращайся скорее

  • @nNizhegorodec
    @nNizhegorodec 2 місяці тому

    200 лайков собраны, очень ждем продолжения! (поддержите коммент лайками)

  • @nnnabbot
    @nnnabbot 7 місяців тому +1

    Когда мы создали s2 - мы создали получается ещё одну ссылку на исходный массив ? Если да , то как создать не ссылку а реально новый массив из исходного ?

    • @gopher_land
      @gopher_land  7 місяців тому +2

      1. Да
      2. Слайс - это всегда ссылка. Но чтобы сделать их независимым и s2 работал с копией
      s := []int{1, 2, 3, 4, 5}
      s2 := make([]int, 5, 5)
      copy(s2, s)
      s2[0] = 555
      fmt.Println(s, s2)

    • @nnnabbot
      @nnnabbot 7 місяців тому +1

      @@gopher_land благодарю. Очень приятно что ответили. Запишу себе в блокнот комбинацию. Уж не знаю понадобится вообще когда нибудь делать независимую копию )) но лучше записать ))

  • @SASsergeich
    @SASsergeich 25 днів тому

    Друган, ты куда пропал?(

  • @alwayze
    @alwayze 7 місяців тому

    Я могу ответить на задачку в конце.
    Дело в том, что слайс по сути - это указатель на низлежащий массив. Из этого можно понять, что когда мы создаем слайс s2, то по факту мы передаем в него указатель от низлежащего массива. И если мы меняем s2, то мы меняем сам низлежащий массив, на который ссылается s1. Все правильно?

    • @gopher_land
      @gopher_land  7 місяців тому

      Нет, тк s[0:2:2] тоже на него ссылается, можешь сразу после 8 строчки написать s2[0] = 1 и изначальный слайс также поменяется. Или можешь у каждого слайса взять указатель от элемента с индексом 0 они будут одинаковые

  • @Думан-ш2я
    @Думан-ш2я 4 місяці тому

    Где новые видео с разжевыванием ??😢

  • @pavelmanin9457
    @pavelmanin9457 4 місяці тому

    Дядь, сделай видео про oi, os, bufio, path, encodind\csv. на Русскоязычном ютубе нет видео вообще

  • @veryfunny_memes
    @veryfunny_memes 2 місяці тому

    ждём видео, 200 лайков есть

  • @user-ded3
    @user-ded3 4 місяці тому

    Когда новый ролик?

  • @Alex_Krivonogov
    @Alex_Krivonogov 7 місяців тому

    Ну и напридумывают же названий. В c++ это вектором обычным именуется и работант почти так же. Зачем ещё названия выдумывать?

    • @awwarez
      @awwarez 7 місяців тому +2

      Потому что это не c++. И вектор в первую очередь намекает на "направление", а лишь затем на "кортеж данных". В любом случае что slice что vector это не удачное название для динамического массива.

  • @dionusios05
    @dionusios05 7 місяців тому

    Очень интересно, но ничего не понятно...

    • @gopher_land
      @gopher_land  7 місяців тому

      Смотрели предыдущие видео?

  • @ДмитрийАганасЯн
    @ДмитрийАганасЯн 7 місяців тому

    никуя не понятно

    • @gopher_land
      @gopher_land  7 місяців тому

      Смотрели предыдущие видео?

    • @ДмитрийАганасЯн
      @ДмитрийАганасЯн 7 місяців тому

      @@gopher_land ответ в предыдущих видео ? ))

    • @gopher_land
      @gopher_land  7 місяців тому +1

      @@ДмитрийАганасЯн видео нужно смотреть по порядку, тк знания из одного видео важны в другом

  • @thmn8
    @thmn8 4 місяці тому +1

    По поводу конца видео:
    Когла мы указываем границу и добавялем 444 мы уже работаем с другим массивом данных.
    А если убрать границу, мы работаем с мервым массивом, потому что капасити у него 5.