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 迴圈仍然是一個可行且有效的選擇。 Go 的 for 迴圈提供了靈活性和優化機會。
for i := range a { if someCondition { result = append(result, a[i]) } }
結論
儘管 Go 中缺乏原生列表理解語法,但過濾器包和 for 循環為過濾和轉換列表提供了強大的解決方案。雖然過濾器包提供了簡潔的語法,但 for 迴圈仍然是高效能且高效的替代方案。最終,方法的選擇將取決於您應用程式的特定要求。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3