Kira panjang kepingan dalam medan struktur

WBOY
Lepaskan: 2024-02-09 14:09:19
ke hadapan
542 orang telah melayarinya

Kira panjang kepingan dalam medan struktur

editor php Yuzai akan memperkenalkan kepada anda cara mengira panjang kepingan dalam medan struktur. Dalam pengaturcaraan, struct ialah struktur data yang digunakan untuk menyusun data berkaitan. Dalam sesetengah kes, kita mungkin perlu mengira panjang kepingan dalam medan struktur untuk melaksanakan operasi yang berkaitan dalam atur cara. Mengira panjang kepingan medan struktur boleh membantu kami memahami dan memproses data dengan lebih baik serta meningkatkan kecekapan dan ketepatan program. Seterusnya, kami akan menerangkan secara terperinci cara melakukan pengiraan dan memberikan contoh yang sepadan.

Kandungan soalan

Saya rasa saya memerlukan penyelesaian yang lebih baik daripada penukaran kes kerana struct mendapat lebih banyak medan dan fungsi saya akan menjadi verbose. Adakah terdapat cara untuk menukar suis saya kepada gelung?

Saya mempunyai kod berikut

type things struct {
    streetnames    []string `json:"streetnames"`
    letters        []string `json:"letters"`
    malenames      []string `json:"malenames"`
}

func checkcategories(data *things, filepath string) error {
    errmsg := "list has no values or is a missing category in file: " + filepath
    categories := []string{"street_name", "letter", "male_first_name"}
    for _, value := range categories {
        switch value {
        case "street_name":
            if len(data.streetnames) == 0 {
                return errors.new("street_name " + errmsg)
            }
        case "letter":
            if len(data.letters) == 0 {
                return errors.new("letter " + errmsg)
            }
        case "male_first_name":
            if len(data.malenames) == 0 {
                return errors.new("male_first_name " + errmsg)
            }
        }
    }
    return nil
}
Salin selepas log masuk

Ini berfungsi untuk saya, tetapi struktur sebenar mengandungi 12 medan, yang menjadikan fungsi saya panjang dan berulang.

Saya dah cuba

for _, value := range categories {
        if len("data." + value) == 0 {
            return errors.New(value + errMsg)
}
Salin selepas log masuk

Tetapi apabila saya menjalankan kod, saya mengambil masa seketika untuk menyedari bahawa ia tidak berfungsi seperti yang diharapkan, saya mendapat panjang rentetan. Saya mencuba data[nilai] tetapi itu juga tidak berfungsi.

Penyelesaian

Adakah terdapat cara untuk menukar suis saya kepada gelung?

Anda boleh melakukan perkara berikut:

type Things struct {
    StreetNames []string `json:"streetNames"`
    Letters     []string `json:"letters"`
    MaleNames   []string `json:"maleNames"`
}

func CheckCategories(data *Things, filePath string) error {
    errMsg := "list has no values or is a missing category in File: " + filePath
    categories := []struct{
        name  string
        slice []string
    }{
        {"street_name", data.StreetNames},
        {"letter", data.Letters},
        {"male_first_name", data.MaleNames},
    }

    for _, v := range categories {
        if len(v.slice) == 0 {
            return errors.New(v.name + " " + errMsg)
        }
    }
    return nil
}
Salin selepas log masuk

Atas ialah kandungan terperinci Kira panjang kepingan dalam medan struktur. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!