ycliper

Популярное

Музыка Кино и Анимация Автомобили Животные Спорт Путешествия Игры Юмор

Интересные видео

2025 Сериалы Трейлеры Новости Как сделать Видеоуроки Diy своими руками

Топ запросов

смотреть а4 schoolboy runaway турецкий сериал смотреть мультфильмы эдисон
Скачать

Передача срезов в функции в Go (справочная семантика)

Автор: Gary Clarke

Загружено: 2025-12-24

Просмотров: 78

Описание: Передача срезов в функции может поначалу удивлять, поскольку изменения, внесенные внутри функции, обычно отображаются в основной функции. В этом уроке по Go вы узнаете, почему срезы ведут себя таким образом, как работает базовый массив и что происходит при добавлении элемента в срез.

Что вы узнаете:
Почему передача среза в функцию не копирует базовые данные
Как срезы используют заголовок, указывающий на общий базовый массив
Почему изменение элементов через срез обновляет исходный массив
Что происходит, когда при добавлении создается новый массив в зависимости от его емкости

Концептуальное объяснение:
Срезы в Go имеют семантику ссылок. Срез содержит небольшой заголовок, указывающий на базовый массив, где хранятся фактические данные. Когда вы передаете срез в функцию, Go копирует только заголовок, а не базовый массив. Этот заголовок по-прежнему указывает на то же базовое хранилище, поэтому обновления элементов влияют на те же данные, которые видит вызывающая сторона. Однако, когда вы добавляете элемент в срез и емкости недостаточно, Go создает новый базовый массив и копирует данные. После этого срезы перестают обмениваться данными.

Применение:
Начав писать вспомогательные функции, вы часто будете передавать срезы для обработки или обновления данных. Понимание семантики ссылок помогает писать эффективный код и избегать путаницы, когда изменения происходят в неожиданных местах. Это понимание также подготовит вас к работе с большими структурами данных, где копирование будет дорогостоящим.

Основные выводы:
Передача среза в функцию передает копию заголовка, а не данных.
Изменение элементов через срез обновляет общий базовый массив.
Присваивание среза другой переменной создает еще одну ссылку на те же данные.
Добавление к срезу может создать или не создать новый массив, в зависимости от его емкости.
Когда создается новый массив, срезы перестают обмениваться данными.

Перед тем, как проверить решение, попробуйте выполнить задание из видео.


Ссылки:
Папка с уроками на GitHub: https://github.com/GaryClarke/go-byte...
Создайте свое первое приложение на Go вместе со мной: https://www.garyclarke.tech/p/build-y...
Подпишитесь на рассылку, чтобы получать новые уроки и ресурсы: https://content.garyclarke.tech/go-by...
Подписывайтесь на нас в X/Twitter:   / garyclarketech  
Свяжитесь с нами в LinkedIn:   / garyclarketech  

Подпишитесь на канал, чтобы получать больше уроков по Go.

#golang #go #programming #coding #learnprogramming #gobytes

Не удается загрузить Youtube-плеер. Проверьте блокировку Youtube в вашей сети.
Повторяем попытку...
Передача срезов в функции в Go (справочная семантика)

Поделиться в:

Доступные форматы для скачивания:

Скачать видео

  • Информация по загрузке:

Скачать аудио

Похожие видео

Вариативные функции в игре Го

Вариативные функции в игре Го

The REAL Reason You Should Use Type Hints in Python

The REAL Reason You Should Use Type Hints in Python

Использование функции make() в Go

Использование функции make() в Go

Передача карт в функции в Go (справочная семантика)

Передача карт в функции в Go (справочная семантика)

Компания Salesforce признала свою ошибку.

Компания Salesforce признала свою ошибку.

СРОЧНО! РЕЗКИЙ ПОВОРОТ В ВОЙНЕ! БАУМЕЙСТЕР - ТРАМП МЕНЯЕТ МИР! Прямой эфир

СРОЧНО! РЕЗКИЙ ПОВОРОТ В ВОЙНЕ! БАУМЕЙСТЕР - ТРАМП МЕНЯЕТ МИР! Прямой эфир

Инициализирующие условия операторов if в Go

Инициализирующие условия операторов if в Go

Работа со временем в Go

Работа со временем в Go

Learn GO Fast: Full Tutorial

Learn GO Fast: Full Tutorial

Перетест Ai MAX+ 395 в жирном мини-ПК и тест AMD 8060s vs Intel B390

Перетест Ai MAX+ 395 в жирном мини-ПК и тест AMD 8060s vs Intel B390

Объяснение многомерных массивов в C++ ⬜

Объяснение многомерных массивов в C++ ⬜

Руны, байты и строки в языке Go

Руны, байты и строки в языке Go

Утверждения типов в Go

Утверждения типов в Go

Инициализация модуля Go с помощью `go mod init`

Инициализация модуля Go с помощью `go mod init`

120 МИЛЛИАРДОВ: КТО и Зачем создал БИТКОИН? Тайна Сатоши Накамото

120 МИЛЛИАРДОВ: КТО и Зачем создал БИТКОИН? Тайна Сатоши Накамото

Learn Python LAMBDA in 6 minutes! 🚮

Learn Python LAMBDA in 6 minutes! 🚮

Разбор СтатГрада по физике от 22.01.2026

Разбор СтатГрада по физике от 22.01.2026

Преобразование строки в число в Go

Преобразование строки в число в Go

Добавление к фрагментам в Go

Добавление к фрагментам в Go

Руководство по выживанию при переходе с Windows на Linux (издание 2027 года) (перевод tony)

Руководство по выживанию при переходе с Windows на Linux (издание 2027 года) (перевод tony)

© 2025 ycliper. Все права защищены.



  • Контакты
  • О нас
  • Политика конфиденциальности



Контакты для правообладателей: [email protected]