Heim > Artikel > Backend-Entwicklung > Wie iteriere ich mithilfe von Reflektion in Go über Zeichenfolgenfelder in einer Struktur?
Iterieren über String-Felder in einer Struktur
Problem:
Iterieren über die String-Felder einer Struktur stellt eine Herausforderung dar, insbesondere wenn Bereinigungs- oder Validierungsvorgänge durchgeführt werden sollen. Die Implementierung mit einem Switch-Case-Ansatz mangelt an Skalierbarkeit und ist ungeeignet, wenn Gorilla/Schema zum Unmarshalling genutzt wird.
Lösung:
Reflect bietet eine Möglichkeit zum Iterieren über Strukturen Felder und die nahtlose Bearbeitung von Zeichenfolgenfeldern. So kann dies erreicht werden:
Beispiel:
<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>
Vorbehalte:
Das obige ist der detaillierte Inhalt vonWie iteriere ich mithilfe von Reflektion in Go über Zeichenfolgenfelder in einer Struktur?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!