Изучай язык программирования Golang и backend разработку вместе с нами! На этом канале ты найдешь видеокурсы, подробные уроки по Golang и разборы собеседований, которые помогут тебе освоить программирование с нуля. Программирование может казаться сложным, но здесь я объясняю всё просто и понятно.
Подписывайся, чтобы начать свой путь в мире Golang и backend разработки!
Крутой монтаж, крутые превью, крутая подача, где лайки? Где просмотры? Надеюсь придут, а то несправедливо, удачи каналу в развитии, жду про параллелизм и конкурентность)
а как вы открываете это контекстное меню с подсказкой от IDE? или это только на маке? я нашел именно через ctrl+q, но там не предлагается никаких действий(удалить например var), а просто показывается что это такое
Ответ в конце видео, 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 и удачи в развитии канала)
А почему наше возвращаемое значение в функции square пишется в скобках и ему назначается како-то имя? Разве это не пишется так: func square(x int) int ?
Когда мы создали s2 - мы создали получается ещё одну ссылку на исходный массив ? Если да , то как создать не ссылку а реально новый массив из исходного ?
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)
@@gopher_land благодарю. Очень приятно что ответили. Запишу себе в блокнот комбинацию. Уж не знаю понадобится вообще когда нибудь делать независимую копию )) но лучше записать ))
Потому что это не c++. И вектор в первую очередь намекает на "направление", а лишь затем на "кортеж данных". В любом случае что slice что vector это не удачное название для динамического массива.
Я могу ответить на задачку в конце. Дело в том, что слайс по сути - это указатель на низлежащий массив. Из этого можно понять, что когда мы создаем слайс s2, то по факту мы передаем в него указатель от низлежащего массива. И если мы меняем s2, то мы меняем сам низлежащий массив, на который ссылается s1. Все правильно?
Нет, тк s[0:2:2] тоже на него ссылается, можешь сразу после 8 строчки написать s2[0] = 1 и изначальный слайс также поменяется. Или можешь у каждого слайса взять указатель от элемента с индексом 0 они будут одинаковые
По поводу бесплатного пользования, с почтой больше не работает, по крайней мере у меня, не продляется. Но есть такая штука, как гитхаб образование, ты каждый год или пол года подтверждаешь, что всё ещё учишься и можешь пользоваться кучей функционала. Главное чтобы вуз участвовал в этой программе, в основном все мск вузы участвуют и некоторые вузы из мелких городов
Раньше можно было получить все продукты JetBrains, если ты учишся в заведении, где твоя специальность связана с IT, но это прикрыли 2 года назад для всех учебных заведений РФ, сейчас не дают так лицензии. Скорее всего и гитхаб образование сейчас тоже для учебных заведений РФ не работает.