Дженерик-структуры данных в Go | OTUS

Дженерик-структуры данных в Go

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

Screenshot_1-1801-3c07cb.png

Итак, новое бинарное дерево создано. При этом наша функция сравнения передаётся функции New.

Screenshot_2-1801-7281b8.png

Неэкспортированный метод выполняет возврат указателя или слот, который содержит v, или на то место в дереве, где она и должна быть.

Screenshot_3-1801-187b07.png

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

Следующий код предназначен для проверки, содержит ли дерево значение:

Screenshot_4-1801-d1cd52.png

А код ниже добавляет новое значение:

Screenshot_5-1801-4d5ce6.png

На что тут следует обратить внимание? Прежде всего, на тип аргумента E в аргументе node. Именно таким образом выглядит код структуры данных с применением дженериков. Видно, что он не особо отличается от обычного кода на Golang, разве что, местами появляются типы в виде аргументов.

Использовать такое дерево очень просто.

Screenshot_6-1801-2b10a4.png

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

По материалам статьи Why Generics?

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

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

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

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