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.
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 }
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) }
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.
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 }
Atas ialah kandungan terperinci Kira panjang kepingan dalam medan struktur. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!