Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk mengulangi medan rentetan dalam struct menggunakan refleksi dalam Go?
Merelakan Merentas Medan Rentetan dalam Struktur
Masalah:
Membalas pada medan rentetan sesuatu struct memberikan cabaran, terutamanya apabila ingin melakukan operasi pembersihan atau pengesahan. Melaksanakan ini dengan pendekatan suis kes tidak berskala dan tidak sesuai apabila memanfaatkan gorila/skema untuk unmarshalling.
Penyelesaian:
Reflect menyediakan jalan untuk lelaran atas struct medan dan memanipulasi medan rentetan dengan lancar. Begini cara ia boleh dicapai:
Contoh:
<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} fmt.Printf("%s%s%s%d%s%d\n", ms.A, ms.B, ms.C, ms.I, ms.D, ms.J) msValuePtr := reflect.ValueOf(&ms) msValue := msValuePtr.Elem() 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) } fmt.Printf("%s%s%s%d%s%d\n", ms.A, ms.B, ms.C, ms.I, ms.D, ms.J) }</code>
Kaveat:
Atas ialah kandungan terperinci Bagaimana untuk mengulangi medan rentetan dalam struct menggunakan refleksi dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!