Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Membersih dan Mengesahkan Medan Rentetan dalam Struktur Menggunakan Refleksi dalam Go?
Mengulang Medan Rentetan dalam Struktur Menggunakan Refleksi
Apabila bekerja dengan struct kompleks yang mengandungi medan rentetan, selalunya perlu membersihkan atau mengesahkan medan tersebut . Walaupun lelaran manual boleh menjadi tidak berskala, menggunakan pantulan menawarkan penyelesaian yang fleksibel.
Melaksanakan Lelaran Medan
Untuk mengulangi medan dalam struct menggunakan pantulan, ikut langkah berikut:
Mengendalikan Ralat dan Pengesahan
Dalam kes khusus anda, anda ingin mengesahkan medan dan menyemak panjang maksimum yang ditentukan oleh teg medan:
Kod Contoh
Berikut ialah contoh pelaksanaan:
<code class="go">package main import ( "fmt" "reflect" "strings" ) type MyStruct struct { A, B, C string I int D string J int } func main() { ms := MyStruct{"Green ", " Eggs", " and ", 2, " Ham ", 15} msValuePtr := reflect.ValueOf(&ms) msValue := msValuePtr.Elem() var invalid []string for i := 0; i < msValue.NumField(); i++ { field := msValue.Field(i) if field.Type() != reflect.TypeOf("") { continue } str := field.Interface().(string) str = strings.TrimSpace(str) field.SetString(str) maxTag := field.Tag.Get("max") if maxTag != "" { maxLength, _ := strconv.Atoi(maxTag) runeCount := unicode.RuneCountInString(str) if runeCount > maxLength { invalid = append(invalid, "Field exceeded max length") } } } if len(invalid) > 0 { fmt.Println("Validation errors:") for _, err := range invalid { fmt.Println(err) } } else { fmt.Println("Validation successful") } }</code>
Kod ini menunjukkan cara untuk membersihkan medan rentetan dan mengesahkan panjang berdasarkan teg medan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membersih dan Mengesahkan Medan Rentetan dalam Struktur Menggunakan Refleksi dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!