Тёмный

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

Gopher
Подписаться 1,8 тыс.
Просмотров 2 тыс.
50% 1

Golang слайсы(slice) и golang массивы(array). Этот урок о слайсах и массивах в языке программирования golang. Мы изучим, что такое слайсы, массивы и зачем они нужны. Как доставать элементы по индексу, а также менять их через индекс. Что такое длина(lenght) и вместимость, емкость(capacity) слайса и массива. А также, что происходит при вызове функции append, как при этом меняется длина и вместимость, емкость. Как создавать слайсы через функцию make. В конце видео мы научимся быстро создавать срезы из слайсов из 3 индексов, границ.
🚨t.me/gopher_land - комьюнити, дз, курс golang и backend разработки🚨

Опубликовано:

 

15 май 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 22   
@gopher_land
@gopher_land Месяц назад
🚨Комьюнити, дз, курс golang и backend разработки - t.me/gopher_land 🚨
@mememaker7671
@mememaker7671 2 дня назад
больше роликов!!!!!
@davdev05
@davdev05 14 дней назад
Крутой монтаж, крутые превью, крутая подача, где лайки? Где просмотры? Надеюсь придут, а то несправедливо, удачи каналу в развитии, жду про параллелизм и конкурентность)
@tron24
@tron24 2 дня назад
Продалжай в том же духе, подписался жду новые видео!
@user-nx5pk3xx4m
@user-nx5pk3xx4m Месяц назад
Спасибо за новый ролик, лучший ютуб канал)
@Allsee77
@Allsee77 23 дня назад
Супер канал, не забрасывай!
@YaHoo4598
@YaHoo4598 21 день назад
Ответ в конце видео, 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 и удачи в развитии канала)
@Onebeardedmarketeur
@Onebeardedmarketeur Месяц назад
Класс, понятно
@saitaro
@saitaro 26 дней назад
Супер, продолжай!
@alwayze
@alwayze Месяц назад
Я могу ответить на задачку в конце. Дело в том, что слайс по сути - это указатель на низлежащий массив. Из этого можно понять, что когда мы создаем слайс s2, то по факту мы передаем в него указатель от низлежащего массива. И если мы меняем s2, то мы меняем сам низлежащий массив, на который ссылается s1. Все правильно?
@gopher_land
@gopher_land Месяц назад
Нет, тк s[0:2:2] тоже на него ссылается, можешь сразу после 8 строчки написать s2[0] = 1 и изначальный слайс также поменяется. Или можешь у каждого слайса взять указатель от элемента с индексом 0 они будут одинаковые
@nnnabbot
@nnnabbot Месяц назад
Когда мы создали s2 - мы создали получается ещё одну ссылку на исходный массив ? Если да , то как создать не ссылку а реально новый массив из исходного ?
@gopher_land
@gopher_land 29 дней назад
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 29 дней назад
@@gopher_land благодарю. Очень приятно что ответили. Запишу себе в блокнот комбинацию. Уж не знаю понадобится вообще когда нибудь делать независимую копию )) но лучше записать ))
@user-qe6ef5xb6g
@user-qe6ef5xb6g Месяц назад
Очень интересно, но ничего не понятно...
@gopher_land
@gopher_land Месяц назад
Смотрели предыдущие видео?
@Alex_Krivonogov
@Alex_Krivonogov Месяц назад
Ну и напридумывают же названий. В c++ это вектором обычным именуется и работант почти так же. Зачем ещё названия выдумывать?
@awwarez
@awwarez Месяц назад
Потому что это не c++. И вектор в первую очередь намекает на "направление", а лишь затем на "кортеж данных". В любом случае что slice что vector это не удачное название для динамического массива.
@user-nn3km7iq2h
@user-nn3km7iq2h Месяц назад
никуя не понятно
@gopher_land
@gopher_land Месяц назад
Смотрели предыдущие видео?
@user-nn3km7iq2h
@user-nn3km7iq2h Месяц назад
@@gopher_land ответ в предыдущих видео ? ))
@gopher_land
@gopher_land Месяц назад
@@user-nn3km7iq2h видео нужно смотреть по порядку, тк знания из одного видео важны в другом
Далее
Что нужно знать о слайсах в Go?
28:34
heavy boot #tiktok
00:16
Просмотров 824 тыс.
🎙ПОЮ твои ЛЮБИМЫЕ ПЕСНИ💥
3:22:10
7 Лет Опыта в IT | Что я Понял?
19:56