在這篇文章中,我們探索在Go 中複製Python 列表理解的方法,特別是語法:
array = [a for a in anotherArray if (some condition)]
Go 提供了Rob 提出的過濾器庫派克。該函式庫提供了一個 Choose() 函數,該函數接受切片和布林函數作為參數。它會傳回一個僅包含滿足指定條件的元素的新切片。
例如:
import "google.golang.org/x/exp/slices" func TestChoose(t *testing.T) { a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9} expect := []int{2, 4, 6, 8} result := slices.Choose(a, isEven) }
雖然過濾器庫提供了方便的解決方案,其官方文件建議不要使用它,因為與顯式for 迴圈相比,它的效率較低。
Go 文件建議使用 for 迴圈作為清單推導式的替代方案。它們提供了一種更有效的解決方案,特別是在需要控制操作順序或限制資料產生的情況下。
例如,以下程式碼計算巢狀循環中的最小值:
min := min(abs(a[i], b[j]) for i in range(n) for j in range(i, n))
以上是如何在Go中實現Python的列表理解功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!