byte===0)/">
php editor Zimo introduces you to a very practical Go language technique: check whether each item in the slice meets the conditions. The slice of the Go language is a flexible and powerful data structure, but in practical applications, we often need to perform conditional judgments on the elements in the slice. This article will introduce in detail how to use the range and if statements of the Go language to check whether each item in the slice meets the conditions we set. By mastering this technique, you will be able to process sliced data more efficiently and improve the readability and maintainability of your code.
What is the most elegant way to check if each item in a slice meets certain conditions? In my particular scenario, I have a byte slice: [16]byte. I need to check if all bytes are 0.
For example, in js, I would do something like:
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
What is the cleanest and most straightforward way to do this in go?
For readability and flexibility (for example, if you need to operate on types other thanbyte
), you might Would benefit from writing a smallall
generic function
true
if and only if all elements of the slice satisfy the predicate.You are then free to use the generic function with different slices and predicates.
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 }
However, there is no need to create a library forall
functions;A bit of copying is worth a bit of dependency.
The above is the detailed content of Go: Check if each item in a slice satisfies a condition. For more information, please follow other related articles on the PHP Chinese website!