0Pricing
DevOps Bootcamp · Урок

Глубокое объединение с mergeOverwrite и dict

Программно объединяйте структурированные значения

«Глубокое объединение с mergeOverwrite и dict» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Создание словарей в шаблонах

Иногда в шаблоне нужно собрать словарь. Функция dict создаёт его из чередующихся пар ключей и значений.

{{ $cfg := dict "level" "info" "json" true }}

Зачем объединять словари

Часто у Вас есть значения чарта по умолчанию и пользовательские переопределения, которые нужно объединить в один словарь. Именно это делает функция merge.

Поверхностное объединение

Функция merge копирует ключи из исходных словарей в целевой, но сохраняет значение в целевом словаре, если такой ключ уже существует.

{{ $out := merge $user $defaults }}

merge отдаёт предпочтение целевому словарю

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

Знакомьтесь: mergeOverwrite

Функция mergeOverwrite действует наоборот: последующие исходные словари перезаписывают целевой, накладывая значения поверх него.

{{ $out := mergeOverwrite $defaults $user }}

Глубокое, а не поверхностное объединение

Обе вспомогательные функции выполняют объединение рекурсивно: вложенные словари объединяются ключ за ключом, а не заменяются целиком.

Предупреждение об изменении данных

Будьте внимательны: merge и mergeOverwrite изменяют свой первый аргумент на месте. Если исходный словарь нужно сохранить неизменным, передайте новый dict.

{{ $base := dict }}{{ $r := mergeOverwrite $base .Values.extra }}

Шаблон со слоями значений по умолчанию

Распространённый шаблон — начать со словаря значений по умолчанию, а затем наложить поверх него пользовательские значения, чтобы для незаданных ключей безопасно использовались значения по умолчанию.

{{ $merged := mergeOverwrite (dict "port" 80) .Values.service }}

Чтение объединённых значений

После объединения с результатом можно работать как с любым словарём и извлекать ключи с помощью dot или функции index, как обычно.

{{ $merged.port }}

Сериализация результата

Чтобы вывести объединённую структуру в формате YAML, передайте её через toYaml и nindent, чтобы блок получил правильный отступ.

{{ toYaml $merged | nindent 4 }}

Извлечение одного ключа

Если имя ключа является динамическим или содержит необычные символы, обращайтесь к словарю с помощью функции index, а не через обращение с точкой.

{{ index $merged "log-level" }}

Быстрая проверка

Короткая проверка направления перезаписи.

Итоги

Вы познакомились с dict для создания словарей, с merge для сохранения ключей целевого словаря и с mergeOverwrite, позволяющей последующим значениям иметь приоритет. Все эти функции выполняют глубокое объединение. 🎉

Часто задаваемые вопросы

Урок «Глубокое объединение с mergeOverwrite и dict» бесплатный?

Да — полный текст урока «Глубокое объединение с mergeOverwrite и dict» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Глубокое объединение с mergeOverwrite и dict»?

Программно объединяйте структурированные значения Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Глубокое объединение с mergeOverwrite и dict»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Глубокое объединение с mergeOverwrite и dict
  2. tpl: рендеринг строк из значений
  3. Циклический перебор файлов с помощью range и .Files.Glob
  4. fail и пользовательские проверки
← Назад к DevOps Bootcamp