Функция append в Go | OTUS

Курсы

Программирование
PHP Developer. Basic
-50%
Специализация PHP Developer iOS Developer. Professional Golang Developer. Professional Python Developer. Basic iOS Developer. Basic Архитектура и шаблоны проектирования MS SQL Server Developer Highload Architect Специализация C++ Developer Cloud Solution Architecture Специализация Java-разработчик Android Developer. Professional Программист С Специализация Fullstack developer VR/AR - разработчик Microservice Architecture Software Architect Team Lead Web-разработчик на Python Rust Developer NoSQL C# Developer. Professional Разработчик программных роботов (RPA) на базе UiPath и PIX Kotlin Backend Developer React.js Developer Node.js Developer Flutter Mobile Developer Symfony Framework C# Developer. Basic Unreal Engine Game Developer Groovy Developer
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Функция append в Go

GoPro_Headline_970x70-1801-dc9277.png

Встроенная функция Append позволит вам работать с Go более эффективно. Давайте напишем эту функцию для добавления элементов в срез:

1-1801-5f3992.png

Итак, с пользовательской функцией Append мы познакомились. Однако сигнатура append отличается от самой функции. Схематически это выглядит так:

2-1801-518851.png

Здесь T -- заполнитель для любого данного типа. То есть на деле вы не сможете написать функцию в Goland, где тип T будет определяться вызывающим абонентом. Именно поэтому append и встроен -- ему необходима поддержка со стороны компилятора.

golang__25282_2529_1-1801-586186.png

Что же append делает? К примеру, добавляет элементы в конец среза, возвращая результат. При этом результат надо вернуть по той же причине, что и в случае с функцией Append, описанной в самом первом примере, -- главный массив может поменяться.

Рассмотрим очередной пример:

3-1801-9150a2.png

Он позволяет напечатать [1 2 3 4 5 6]. То есть в каком-то смысле работу append можно сравнить с Printf, когда собирается произвольное количество аргументов.

Но что нам делать, если мы желаем воспользоваться возможностями Append, добавив срез в срез? На деле мы можем применить троеточие ... при вызове места, как это было в случае с вызовом Output выше. Пример ниже позволит получить результат, который идентичен вышеприведенному:

4-1801-21fbf0.png

Интересно, что без троеточия ... компиляция не отработает, т. к. типы будут неверны, ведь y к типу int не относится.

По материалам блога https://golang-blog.blogspot.com/.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться