迭代結構體中的字串欄位
問題:
迭代字串欄位結構體的結構提出了一個挑戰,特別是在尋求執行清理或驗證操作時。使用 switch-case 方法實現此方法缺乏可擴展性,並且在利用 gorilla/schema 進行解組時不適合。
解決方案:
Reflect 提供了一種迭代結構體的路徑欄位並無縫操作字串欄位。實作方法如下:
範例:
<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>
注意事項:
以上是如何在 Go 中使用反射迭代結構體中的字串欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!