구조체의 문자열 필드 반복
문제:
문자열 필드 반복 특히 정리 또는 유효성 검사 작업을 수행하려고 할 때 구조체의 문제가 발생합니다. 스위치 케이스 접근 방식으로 이를 구현하면 확장성이 부족하고 비정렬화를 위해 고릴라/스키마를 활용할 때 적합하지 않습니다.
해결책:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!