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

Pergi: Semak sama ada setiap item dalam kepingan memenuhi syarat

WBOY
Lepaskan: 2024-02-08 21:10:29
ke hadapan
1054 orang telah melayarinya

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
Salin selepas log masuk

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
}
Salin selepas log masuk

(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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan