LCML/Структуры

deepcopy

deepcopy - Функция deepcopy создает глубокую копию переданного значения.

Метод

Part: LCML/Структуры

Глубокая копия — это процесс создания нового объекта, который является полной копией исходного объекта, включая все его вложенные структуры. В результате изменения в новом объекте не затрагивают исходный объект.

Отличие глубокой копии от поверхностной

  • Поверхностная копия (shallow copy) копирует только верхний уровень объекта. Вложенные объекты (например, структуры, срезы или карты) не копируются, а передаются по ссылке.Изменение вложенных объектов в копии изменяет их и в оригинале.

  • Глубокая копия (deep copy) создает новые экземпляры всех вложенных объектов, рекурсивно копируя их содержимое. Изменение вложенных объектов в копии не влияет на оригинал. Формат

deepcopy value

  • value: Объект, который нужно скопировать. Результат

Возвращает глубокую копию объекта.

Пример использования

{{ $skills := slicestringnew }} {{ $skills = slicestringappend “Go” Devops“ }} {{ $dict := dict ”name“ ”Katya“ ”age“ 28 ”skills“ $skills }}

{{ $copy := deepcopy $dict }}

{{ /* Изменим данные в копии */ }} {{ set $copy ”name“ ”Ilya“ }} {{ set $copy ”age“ 20 }} {{ set $copy ”skills“ (slicestringappend ”gui“) }}

{{ /* Вывод оригинала и копии */ }} {{ $dict }} {{ $copy }} >> map[name:Katya age:28 skills:[Go Devops]] >> map[name:Ilya age:20 skills:[Go Devops gui]]


deletekey

deletekey - Удаление ключа из словаря

Метод

Part: LCML/Структуры

Функция deletekey удаляет ключ из словаря.

Формат:

deletekey dictionary key
  • dictionary — мапа, из которой требуется удалить ключ.
  • key — строка, представляющая ключ, который необходимо удалить. Результат:

Возвращает строку true после успешного удаления указанного ключа из словаря.

Пример использования:

{{ $myMap := dict "key1" "value1" "key2" "value2" "key3" "value3" }}
{{ deletekey $myMap "key2" }}
{{ $myMap }}
> "true"

dict

dict - Мультиплексирование параметров и создание структур данных

Метод

Part: LCML/Структуры

Функция dict позволяет мультиплексировать параметры и создавать структуры данных из последовательности пар ключ-значение.

Формат:

dict key1 value1 key2 value2 ...
  • key1, key2,… — строковые ключи, по которым будут храниться передаваемые значения.
  • value1, value2,… — значения, соответствующие указанным ключам. Результат:

Функция возвращает объект типа map[string]interface{} , который может быть использован в шаблонах для передачи параметров или создания новых структур данных.

Примеры использования:

{{template "sub-template" dict "Data" . "Values" $.Values}}

Объяснение: “sub-template” — имя подключаемого шаблона. dict “Data”. “Values” $.Values — передаёт параметры: Data — в данном примере текущий контекст (. ), Values — в данном примере структура значений ( $.Values ) из корневого контекста.

{{ $new_structure := dict "param1" "value1" "param2" "value2" }}

Объяснение: Создаётся новая структура данных $new_structure с ключами param1 и param2 и их значениями.


dictstring

dictstring - Создание словаря строк

Метод

Part: LCML/Структуры

Функция dictstring создает словарь ( map[string]string ) из переданных строковых параметров. Каждый первый элемент пары становится ключом, а второй — значением. Она подходит для случаев, когда значения и ключи — строки, и помогает создать четко структурированные карты.

Формат:

dictstring key1 value1 key2 value2 ...
  • key1, key2,… — строки, которые используются как ключи.

  • value1, value2,… — строки, которые используются как значения. Результат:

Функция возвращает карту ( map[string]string ), содержащую пары ключ-значение, сформированные из входных параметров.

Обработка ошибок:

  • Пустой список параметров: Если список входных параметров пуст, возвращается ошибка.

  • Нечетное количество параметров: Если количество параметров нечетное (например, отсутствует значение для последнего ключа), возвращается ошибка. Пример использования:

    {{ $queryparams := dictstring "tpls" $tickets "limit" "100" "filter_src" $p "filter_field" "author" "short" "false" }}
    

fastjsonforkey

fastjsonforkey - Извлечение значения по ключу из JSON

Метод

Part: LCML/Структуры

Функция fastjsonforkey предназначена для быстрого извлечения значения из JSON-строки по указанному ключу с использованием библиотеки fastjson.

Формат:

fastjsonforkey jsonString key
  • jsonString — строка, содержащая JSON-данные. Перед обработкой пробелы в начале и конце строки автоматически удаляются.
  • key — ключ, значение которого нужно извлечь из JSON-объекта. Поддерживаются только верхнеуровневые ключи. Результат:

Функция возвращает значение, связанное с указанным ключом в JSON-строке. Если возникают ошибки при парсинге JSON или доступе к ключу, возвращается текстовое описание ошибки.

Пример использования:

{{ $userName := fastjsonforkey $user "name" }}

get

get - Получение значения из структуры

Метод

Part: LCML/Структуры

Функция get позволяет извлечь значение из структуры (карты) по заданному ключу. Если ключ отсутствует, возвращается пустая строка.

Формат:

get struct key
  • struct — структура в виде карты map[string]interface{}.
  • key — строковое имя ключа, значение которого требуется извлечь. Результат:

Функция возвращает значение, соответствующее указанному ключу в переданной карте. Если ключ отсутствует, возвращается пустая строка ( “” ).

Пример использования:

{{ $res := get $.Value "fisher" }}
>> "Грека"

has

has - Функция has проверяет наличие элемента в массиве или срезе.

Метод

Part: LCML/Структуры

Формат

has needle haystack

  • needle: Элемент, который нужно найти.

  • haystack: Массив или срез, в котором производится поиск. Результат

Возвращает true, если элемент найден, иначе false.

Пример использования

{{ $list := list “moon” “sky” “sun” }} {{ $result := has “moon” $list }} {{ $result }} >> true


haskey

haskey - Функция haskey проверяет наличие ключа в мапе.

Метод

Part: LCML/Структуры

Формат

haskey d key

  • d: Мапа, в которой проверяется наличие ключа.

  • key: Проверяемый ключ. Результат

Возвращает true, если ключ существует, иначе — false.

Пример использования

{{ $dict := dict “name” “Ivan” }} {{ $exists := haskey $dict “name” }} {{ $exists }} >> true

{{ $notExists := hasKey $dict “age” }} {{ $notExists }} >> false


keys

keys - Функция keys возвращает список всех ключей из одного или нескольких словарей.

Метод

Part: LCML/Структуры

Формат

keys d…

  • d…: Список словарей, ключи которых извлекаются. Результат

Возвращает список всех ключей из словарей.

Пример использования

{{ $dict := dict “name” “Ivan” “age” 44 }} {{ $keys := keys $dict }} {{ $keys }} >> [name age]


last

last - Функция last возвращает последний элемент среза.

Метод

Part: LCML/Структуры

Формат

last list

  • list: Срез, из которого нужно получить последний элемент. Результат

Возвращает последний элемент среза или nil, если срез пустой. Если переданный аргумент не является массивом или срезом, функция вызывает panic.

Пример использования

{{ $list := list 1 2 3 }} {{ $last := last $list }} {{ $last }} >> 3


merge

merge - Функция merge объединяет несколько словарей, добавляя ключи и значения из всех источников.

Метод

Part: LCML/Структуры

Формат

merge dst src…

  • dst: Целевой словарь, в который выполняется слияние.

  • src…: Один или несколько исходных словарей, которые добавляются в целевой словарь. Результат

Возвращает объединенный словарь.

Пример использования

{{ $dict1 := dict “name” “Ivan” }} {{ $dict2 := dict “age” 44 }} {{ $merged := merge $dict1 $dict2 }} {{ $merged }} >> map[name:Ivan age:44]


mergeoverwrite

mergeoverwrite - Функция mergeoverwrite объединяет несколько словарей с перезаписью существующих ключей, если они присутствуют в исходных словарях.

Метод

Part: LCML/Структуры

Формат

mergeoverwrite dst src…

  • dst: Целевой словарь, в который выполняется слияние.

  • src…: Один или несколько исходных словарей, которые добавляются в целевой словарь с перезаписью. Результат

Возвращает объединенный словарь.

Пример использования

{{ $dict1 := dict “name” “Katya” “age” 28 }} {{ $dict2 := dict “age” 29 }} {{ $merged := mergeoverwrite $dict1 $dict2 }} {{ $merged }} >> map[name:Katya age:29]


omit

omit - Функция omit создает новый словарь, исключая указанные ключи.

Метод

Part: LCML/Структуры

Формат

omit dict keys…

  • dict: Исходный словарь.

  • keys…: Список ключей, которые нужно исключить. Результат

Возвращает новый словарь без указанных ключей.

Пример использования

{{ $dict := dict “name” “Ivan” “age” 44 “city” “Khabarovsk” }} {{ $omitted := omit $dict “age” }} {{ $omitted }} >> map[name:Ivan city:Khabarovsk]


pick

pick - Функция pick создает новый словарь, содержащий только указанные ключи из исходного словаря.

Метод

Part: LCML/Структуры

Формат

pick dict keys…

  • dict: Исходный словарь.

  • keys…: Список ключей, которые нужно выбрать. Результат

Возвращает новый словарь с выбранными ключами.

Пример использования

{{ $dict := dict “name” “Ivan” “age” 44 “city” “Khabarovsk” }} {{ $picked := pick $dict “name” “city” }} {{ $picked }} >> map[name:Ivan city:Khabarovsk]


pluck

pluck - Функция pluck извлекает значения по указанному ключу из одного или нескольких словарей.

Метод

Part: LCML/Структуры

Формат

pluck key d…

  • key: Ключ, по которому извлекаются значения.

  • d…: Список словарей, из которых извлекаются значения. Результат

Возвращает список значений, соответствующих ключу во всех словарях.

Пример использования

{{ $dict1 := dict “name” “Ivan” “role” “techlead }} {{ $dict2 := dict ”name“ ”Katya“ ”role“ ”developer“ }} {{ $names := pluck ”name“ $dict1 $dict2 }} {{ $names }} >> [Ivan Katya]


prepend

prepend - Функция prepend добавляет элемент в начало среза.

Метод

Part: LCML/Структуры

Формат

prepend list value

  • list: Срез, в который добавляется элемент.

  • value: Элемент, который нужно добавить в начало среза. Результат

Возвращает новый срез с добавленным элементом в начале. Если переданный аргумент не является массивом или срезом, функция вызывает panic.

Пример использования

{{ $list := list 0 1 2 }} {{ $newList := prepend $list -1 }} {{ $newList }} >> [-1 0 1 2]


push

push - Функция push добавляет элемент в конец среза.

Метод

Part: LCML/Структуры

Формат

push list value

  • list: Срез, в который добавляется элемент.

  • value: Элемент, который нужно добавить в конец среза. Результат

Возвращает новый срез с добавленным элементом. Если переданный аргумент не является массивом или срезом, функция вызывает panic.

Пример использования

{{ $list := list 1 2 3 4 }} {{ $newList := push $list 5 }} {{ $newList }} >> [1 2 3 4 5]


rest

rest - Функция rest возвращает все элементы списка, кроме первого.

Метод

Part: LCML/Структуры

Формат

rest list

  • list: Список, из которого нужно получить все элементы, кроме первого. Результат

Возвращает новый список без первого элемента. Если список пустой, возвращает пустой список. При возникновении ошибки функция вызывает panic.

Пример использования

{{ $list := list 10 20 30 }} {{ $rest := rest $list }} {{ $rest }} >> [20 30]


reverse

reverse - Функция reverse возвращает новый список с элементами в обратном порядке.

Метод

Part: LCML/Структуры

Формат

reverse list

  • list: Список, который нужно развернуть в обратном порядке. Результат

Возвращает новый список с элементами в обратном порядке.

Пример использования

{{ $list := list 10 20 30 }} {{ $reversed := reverse $list }} {{ $reversed }} >> [30 20 10]


set

set - Задание значения в структуре

Метод

Part: LCML/Структуры

Функция set позволяет добавить новое поле или изменить существующее значение в структуре.

Формат:

set struct key value
  • struct — структура данных (мапа или объект), в которую нужно внести изменения.
  • key — ключ в структуре (строка), который нужно создать или обновить.
  • value — значение, которое будет добавлено или заменено (может быть любого типа). Результат:

Возвращает обновленную структуру, чтобы можно было работать с ней дальше.

Пример использования:

{ $_ := set $.Value "fisher" "Грека" }

setstring

setstring - Добавляет или обновляет значение в мапе со строками

Метод

Part: LCML/Структуры

Функция setstring добавляет или обновляет значение в мапе со строками.

Формат:

setstring map key value
  • map — map[string]string, в которую будет добавлена или обновлена пара ключ-значение.
  • key — строка-ключ.
  • value — строка-значение. Результат:

Возвращает обновлённую мапу map[string]string с новой или изменённой парой ключ-значение.

Пример использования:


{{ $data := dict "name" "Ivan" "role" "TeamLead" }}
{{ $updated := setstring $data "department" "Edtech" }}
{{ $updated }}
>> map[department:Edtech name:Ivan role:TeamLead]