bait===0)/"/> bait===0)/">

Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pergi: Semak sama ada setiap item dalam kepingan memenuhi syarat

Pergi: Semak sama ada setiap item dalam kepingan memenuhi syarat

WBOY
WBOYke hadapan
2024-02-08 21:10:291011semak imbas

Pergi: Semak sama ada setiap item dalam kepingan memenuhi syarat

Editor PHP Zimo memperkenalkan anda kepada teknik bahasa Go yang sangat praktikal: semak sama ada setiap item dalam kepingan memenuhi syarat. Potongan bahasa Go ialah struktur data yang fleksibel dan berkuasa, tetapi dalam aplikasi praktikal, kita selalunya perlu melakukan pertimbangan bersyarat pada elemen dalam kepingan. Artikel ini akan memperkenalkan secara terperinci cara menggunakan julat dan jika pernyataan bahasa Go untuk menyemak sama ada setiap item dalam hirisan memenuhi syarat yang kami tetapkan. Dengan menguasai teknik ini, anda akan dapat memproses data yang dihiris dengan lebih cekap dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod anda.

Kandungan soalan


Apakah cara yang paling elegan untuk menyemak sama ada setiap item dalam kepingan memenuhi syarat tertentu? Dalam senario khusus saya, saya mempunyai kepingan bait: [16]bait. Saya perlu menyemak sama ada semua bait adalah 0.

Sebagai contoh, dalam js, saya akan melakukan sesuatu seperti:

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

Apakah cara paling bersih dan paling mudah untuk melakukan ini secara berterusan?


Penyelesaian


Untuk kebolehbacaan dan fleksibiliti (cth. jika anda perlu menggunakan byte 以外的类型进行操作),您可能会受益于编写一个小的 all fungsi generik

  • mengambil hirisan dan predikat jenis unsur hirisan, dan
  • Mengembalikan true jika dan hanya jika semua elemen hirisan memenuhi predikat.

Anda kemudian bebas menggunakan fungsi generik dengan kepingan dan predikat yang berbeza.

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
}

(Taman Permainan)

Tidak perlu membuat perpustakaan untuk all fungsi, walaupun Sedikit menyalin bernilai sedikit kebergantungan.

Atas ialah kandungan terperinci Pergi: Semak sama ada setiap item dalam kepingan memenuhi syarat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam