Maison > Article > développement back-end > Comment parcourir les champs de chaîne dans une structure en utilisant la réflexion dans Go ?
Itération sur les champs de chaîne dans une structure
Problème :
Itération sur les champs de chaîne d'une structure présente un défi, en particulier lorsque l'on cherche à effectuer des opérations de nettoyage ou de validation. L'implémentation de ceci avec une approche de changement de cas manque d'évolutivité et n'est pas adaptée lors de l'exploitation du gorille/schéma pour le démarshalling.
Solution :
Reflect fournit un moyen d'itérer sur la structure champs et manipuler les champs de chaîne de manière transparente. Voici comment y parvenir :
Exemple :
<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>
Avertissements :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!