Все о массивах и слайсах в Go в одном видео

Поделиться
HTML-код
  • Опубликовано: 28 янв 2025

Комментарии • 61

  • @vladimir_balun_programming
    @vladimir_balun_programming  4 месяца назад +1

    Присоединяйтесь к моему каналу в Telegram: t.me/vladimir_balun_programming
    Делюсь там интересными активностями, мыслями, новостями и материалами по программированию, а также рассказываю о том, что читаю и изучаю по программированию и не только!

  • @Albert-nc1rj
    @Albert-nc1rj 4 месяца назад +23

    Пожалуй лучшее видео про слайсы и массивы в Go на ютубе, даже на англоязычном ютубе ничего такого не видел)

    • @vladimir_balun_programming
      @vladimir_balun_programming  4 месяца назад +1

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

    • @sychsiarhei6208
      @sychsiarhei6208 4 месяца назад +2

      Час назад видео вышло.. хоть посмотрел , прежде чем писать?

    • @Albert-nc1rj
      @Albert-nc1rj 4 месяца назад

      @@sychsiarhei6208 мне хватило 40 минут, чтобы написать комментарий

    • @РусланЮсуфов-ф3ш
      @РусланЮсуфов-ф3ш 4 месяца назад

      @@sychsiarhei6208 , на х2 скорости спокойно)

  • @IzanakiTheCreator
    @IzanakiTheCreator 6 дней назад +1

    очень круто, спасибо!

  • @Noah-zt3sf
    @Noah-zt3sf 2 месяца назад +1

    Владимир, вас очень приятно слушать, разбор темы глубокий, чувствуется интерес и профессионализм, однозначно лайк

  • @broninrocks5431
    @broninrocks5431 4 месяца назад +8

    Теперь мамкины интервьюеры ещё злее будут долбить кандидатов этими слайсами. Спасибо хоть пока дженерики особо не осилили

  • @mikeofs1304
    @mikeofs1304 2 месяца назад +1

    34:30 в loopunwinding функции ошибка в цикле вместо len/4 и j++ надо j += 4 иначе не пройдем весь слайс. Скорее даже опечатка))
    А видео отличное

  • @faustgete9869
    @faustgete9869 4 месяца назад +5

    Пожалуй поправлю Маэстро)). На 19:36 все таки при make([]int, 3, 6) будет три элемента в слайсе, т.е. [0, 0, 0]. Капасити все так же 6 элементов. 😊

    • @faustgete9869
      @faustgete9869 4 месяца назад

      Прошу прощения, далее все объяснено, но на том слайде корректнее все таки три элемента изобразить)

  • @faustgete9869
    @faustgete9869 4 месяца назад +1

    Прекрасное видео по внутреннему устройству языка! Было бы здорово в отдельном видео раскрыть тему хранения данных на стеке и куче, если такого ещё нет на канале.

  • @ШамильШайдуллин-з8е
    @ШамильШайдуллин-з8е 2 месяца назад +1

    На 46:10 классно было бы напомнить людям о том что у каждой переменной есть тип и значение и len cap лезут в именно в тип

  • @jojomajo
    @jojomajo 13 дней назад

    57:02 сижу такой слушаю и тут: "меньше или больше 10мбайт" и я такой, чего, мой разум был хакнут

  • @БогданКоробка-ф2к
    @БогданКоробка-ф2к 4 месяца назад

    Очень даже годно и простым языком с примерами. Буду смотреть твои выпуски.

  • @KranWagen
    @KranWagen 4 месяца назад +2

    Язык Golang кажется очень простым, и кажется, что ты уже всё знаешь о нём. Но всё равно он остаётся интересным, и хочется изучать его глубже. Спасибо вам за это!

    • @vladimir_balun_programming
      @vladimir_balun_programming  4 месяца назад

      @@KranWagen он действительно простой, чтобы начать на нем писать, но как и влюбил другом языке - в нем есть множество тонкостей и нюансов

  • @Go_Dnota
    @Go_Dnota 2 месяца назад

    Лучший гайд на в ру сигменте, сделай пожалуйста по мапам то же и самое

  • @cglike
    @cglike 4 месяца назад +3

    6:50 «добавляю единичку умножаю на два» звучит так будто другой порядок операций.
    Массив не указатель - да, внутри нет указателя, но сам массив это же по сути указатель, и на 6:50 вы как раз работаете с ним как с указателем

  • @m1khal3v
    @m1khal3v 4 месяца назад

    На 40:00 минуте прям очень интересно)

  • @Serj1c
    @Serj1c 3 месяца назад +2

    у нас есть указатель на начало массива, но при этом массив это никакой не указатель область памяти)

  • @Бакит-р3ю
    @Бакит-р3ю 6 дней назад

    На 30:02 вы делаете глобальную переменную Result и в этом случае бенчмарк тест для нашей конвертации показывает лучшее время, но если переменную описать вот так 1)result := []byte(str) 2)result := convert(str), то в первом случае будет лучшее время. Мне вот интересно почему?

  • @konstantinfess8550
    @konstantinfess8550 4 месяца назад

    Владимир, спасибо большое за раскрытие темы! Это очень круто! Ты бы мог прикрепить презентацию с видео?

    • @vladimir_balun_programming
      @vladimir_balun_programming  4 месяца назад

      Спасибо, презентацию не смогу прикрепить, так как она будет меняться периодически

  • @Basestation-tt2sm
    @Basestation-tt2sm 25 дней назад

    27:50 а если в строке символы более 1Б и они в перемешку с 1Б символами, то не смогу воспользоваться, как я понял

  • @sd3veng338
    @sd3veng338 3 месяца назад +1

    хотелось бы видеть livecoding, на примере какого нить проекта, к примеру web с использованием какого нить фраемворка fiber или gin

  • @dlatin
    @dlatin 4 месяца назад

    Про range по массивам стоит сказать, что в правой части range массив тоже будет скопирован.
    Т.е если range через i, v и в первой итерации меняем последний элемент массива по индексу, то на последней итерации v будет старый.

  • @ДмитрийВ-ч1к
    @ДмитрийВ-ч1к 4 месяца назад

    При написании своей функции Append на 1:15:15 допущена серьёзная ошибка.
    Не учтено, что len(data) может быть больше чем previousLen.
    Например: previousLen = 1; cap(slice) = 4; len(data) = 5;
    Получим, что newLength = 6 и newLength > cap(slice), функция make создаст newSlice( len=2; cap=2)
    В строке 21 получим панику.
    Чтобы исправить ошибку, лучше в строке 11 написать:
    capacity := newLength + newLength
    В функции main (строки 28-36) вместо своей функции Append вызывается стандартная функция append.

  • @Гаврюша1
    @Гаврюша1 4 месяца назад +4

    Давай курс по c++😅

    • @vladimir_balun_programming
      @vladimir_balun_programming  4 месяца назад +1

      Может быть в будущем сделаю по многопоточному программированию)

  • @МартинАдамов
    @МартинАдамов 4 месяца назад

    Здравствуйте! Где я могу заказать книги для, начинающих программирования на C++ ?

  • @IgorAlekseev-x2n
    @IgorAlekseev-x2n 3 месяца назад

    Владимир, в тесте BenchmarkWithLoopUnwniding вы итерируетесь по четверти массива (зато 4 раза).

    • @yavener
      @yavener 18 дней назад

      вроде да, там нужно было приращение j++ поменять на j += 4

  • @РоландДискейн-к6й
    @РоландДискейн-к6й 4 месяца назад +1

    Я не понял: ты говоришь, что массив не является указателем и сразу после говоришь, что массив указывает на начало блока памяти. Объясни, пожалуйста, я запутался. Тайминг: 5:43

  • @doingwell5629
    @doingwell5629 4 месяца назад

    эээм, а если я взял адресс массива а он потом переехал, я подозреваю а рантайме нет event-driven механизма при котором моя пременная с адресом обновится автоматически? Получается я любой момент времени я могу получить invalid pointer? Или это не так и рантайм постоянно резолвит адреса во время обращения к переменной?

  • @ivanchukayev6547
    @ivanchukayev6547 4 месяца назад

    Кажется я уже стал Senior Go developer)))

  • @JIockjoy
    @JIockjoy 3 месяца назад

    Добрый день, 6:19 Массив это не указатель, 6:35 Уже есть указатель на начало, не стыковка. Возможно, те кто говорил что массив есть указатель, очень хорошо понимают С анд С++, где имя массива хранит в себе адрес первого элемента и то что вы приводите на графике с 6:34 и есть разыменование указателя. Так что да имя массива и есть указатель! Дальше опасаюсь смотреть, потому что докладчик может нести неправдивую информацию.

    • @vladimir_balun_programming
      @vladimir_balun_programming  3 месяца назад

      Массив, как и любая другая переменная находится в памяти, у этого участка памяти есть адрес, относительно этого адреса я произвожу все операции (все равно, что если я бы обратился к 4 байту int32 переменной - когда int32 переменная не является указателем)
      Если вы настолько категоричны к тому, что я в том месте употребил слово "указатель на начало", а не "начало массива" - пожалуйста, можете дальше не смотреть

  • @dlatin
    @dlatin 4 месяца назад

    Если массив [0]int{} имеет размер 0 байт, верно ли, что эту конструкцию можно использовать как замену пустой структуре при передаче через каналы?

    • @vladimir_balun_programming
      @vladimir_balun_programming  4 месяца назад

      @@dlatin зачем?)

    • @dlatin
      @dlatin 4 месяца назад

      ​@@vladimir_balun_programmingвопрос не в этом, а в том - будет ли это полноценной альтернативой?

  • @va-petrov
    @va-petrov 4 месяца назад

    В iteration_optimization логическая ошибка в BenchmarkWithLoopUnwinding(). Счетчик увеличивается на единицу, а не на 4. Нужно либо j+=4 в заголовке цикла, либо j*4 в индексах. Это несколько ухудшит производительность, но не сильно.

    • @va-petrov
      @va-petrov 4 месяца назад

      И len(data)/4 лучше выполнить 1 раз перед циклом. Но надо мерять, что быстрее j+=4 и проверка на

    • @vladimir_balun_programming
      @vladimir_balun_programming  4 месяца назад

      @@va-petrov да, на счет ошибки согласен

  • @ziliboba73
    @ziliboba73 3 месяца назад

    На 19:40 там неверно, должно быть // [0, 0, 0]

  • @dmitryzhigalkin1276
    @dmitryzhigalkin1276 4 месяца назад

    4:38 если массивы можно сравнивать, почему их нельзя использовать как ключи в мапе?

  • @彡_UCI_彡
    @彡_UCI_彡 4 месяца назад

    Привет!
    вот мне тут подумалось а может правильнее не передавать массив в функцию?
    это же будет как мы тут выяснили совсем не квантовое действие
    правильнее в духе GO делать передачу массива в канале
    верно? )

  • @sergegoujon8022
    @sergegoujon8022 3 месяца назад

    Если уж каверкать устоявшуюся английскую терминологию и пытаться передать смысл на русском, то это не срез, а нарезка тогда уж. Не нужно выдумывать термины, есть общепринятое соглашение, что ЯП и терминология с ним связанная - всё на английском языке.

  • @EyeOfInfinity-t5g
    @EyeOfInfinity-t5g 4 месяца назад

    "массив не указатель". через минуту "берем указатель на масив и через ансейв читаем данные" :)

    • @vladimir_balun_programming
      @vladimir_balun_programming  4 месяца назад +2

      А где здесь противоречие? Указатель != взять указатель на что-то

    • @НеферумСанайель
      @НеферумСанайель 4 месяца назад

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

    • @vladimir_balun_programming
      @vladimir_balun_programming  4 месяца назад +1

      @@НеферумСанайель еще раз скажу - указатель != взять указатель на то, что не является указателем

  • @EminPogosbekov
    @EminPogosbekov 3 месяца назад

    это нельзя не лайкнуть