리플렉션을 사용하여 구조체의 문자열 필드 반복
문자열 필드가 포함된 복잡한 구조체로 작업할 때 해당 필드를 정리하거나 유효성을 검사해야 하는 경우가 많습니다. . 수동 반복은 확장이 불가능할 수 있지만 리플렉션을 사용하면 유연한 솔루션을 제공할 수 있습니다.
필드 반복 구현
리플렉션을 사용하여 구조체의 필드를 반복하려면 다음 단계를 따르세요.
오류 및 유효성 검사 처리
특정 사례에서는 필드의 유효성을 검사하고 필드 태그로 지정된 최대 길이를 확인하려고 합니다.
예제 코드
다음은 구현 예입니다.
<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>
이 코드는 문자열 필드를 정리하고 필드 태그를 기반으로 길이의 유효성을 검사하는 방법을 보여줍니다.
위 내용은 Go에서 리플렉션을 사용하여 구조체의 문자열 필드를 어떻게 정리하고 검증할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!