byte===0)/"/> byte===0)/">
php小編子墨為您介紹一個非常實用的Go語言技巧:檢查切片中的每個項目是否符合條件。 Go語言的切片是一種靈活且功能強大的資料結構,但在實際應用中,我們常常需要對切片中的元素進行條件判斷。本文將詳細介紹如何使用Go語言的range和if語句來檢查切片中的每個項目是否符合我們所設定的條件。透過掌握這個技巧,您將能夠更有效率地處理切片數據,提高程式碼的可讀性和可維護性。
檢查切片中的每個項目是否滿足某些條件的最優雅的方法是什麼?在我的特定場景中,我有一個位元組:[16]byte。我需要檢查所有位元組是否都是 0。
例如,在 js 中,我會做類似的事情:
const uint8Array = new Uint8Array([0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0])//Can be thought of as an array of "bytes" const isEmpty = uint8Array.every(byte=>byte === 0)//Check that every "byte" is zero console.log(isEmpty)//false
在 go 中執行此操作最乾淨、最直接的方法是什麼?
為了可讀性和靈活性(例如,如果您需要對byte
以外的類型進行操作),您可能會受益於寫一個小的all
通用函數
true
。 然後您就可以自由地將通用函數與不同的切片和謂詞一起使用。
package main import "fmt" func main() { bs := []byte{15: 1} // slice of 16 bytes, all but the last one of which are zero isZero := func(b byte) bool { return b == 0 } fmt.Println(All(bs, isZero)) // false } func All[T any](ts []T, pred func(T) bool) bool { for _, t := range ts { if !pred(t) { return false } } return true }
(遊樂場)
不過,無需為 all
函數建立函式庫;一點複製勝過一點依賴。
以上是Go:檢查切片中的每個項目是否符合條件的詳細內容。更多資訊請關注PHP中文網其他相關文章!