Эквивалент Go для построения списков в Python
Способ формирования списков в Python предлагает краткий способ создания списков путем фильтрации и преобразования элементов. Однако, если вы переходите на Go и вам сложно воспроизвести эту функциональность, вот решение:
Элегантное решение с использованием пакета фильтров
К счастью, сообщество Go предоставил пакет фильтров, который предлагает функциональность, аналогичную пониманию списков в Python. В частности, его функция Choose принимает срез и функцию фильтрации, возвращая новый срез, содержащий только элементы, прошедшие фильтр.
import "github.com/rogpeppe/go-internal/filter" func Choose(slice []T, fn func(T) bool) []T
Пример:
// Get even numbers from a list a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9} expect := []int{2, 4, 6, 8} result := filter.Choose(a, isEven)
Альтернативный подход: циклы for
Хотя пакет фильтров обеспечивает удобство, важно отметить, что использование традиционных циклов for по-прежнему является жизнеспособным и эффективным вариантом. Циклы for в Go обеспечивают гибкость и возможности оптимизации.
for i := range a { if someCondition { result = append(result, a[i]) } }
Заключение
Несмотря на отсутствие встроенного синтаксиса понимания списков в Go, пакет фильтров и циклы for предлагают надежные решения для фильтрации и преобразования списков. Хотя пакет фильтров обеспечивает краткий синтаксис, циклы for остаются производительной и эффективной альтернативой. В конечном итоге выбор подхода будет зависеть от конкретных требований вашего приложения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3