Go에서 중첩 구조체의 문자 그대로 초기화
Go에서 복잡한 데이터 구조를 구현할 때 중첩 구조체를 초기화하는 것이 어려울 수 있습니다. 경우에 따라 각 중첩 수준을 명시적으로 정의하지 않고 이러한 구조를 직접 초기화하는 것이 바람직합니다.
문제 설명
다음 구조를 고려하세요.
type tokenRequest struct { auth struct { identity struct { methods []string password struct { user struct { name string domain struct { id string } password string } } } } }
이 구조체를 초기화하려는 순진한 시도는 다음과 같습니다. 이것:
req := &tokenRequest{ auth: struct { identity: struct { methods: []string{"password"}, password: { user: { name: os.Username, domain: { id: "default", }, password: os.Password, }, }, }, }, }
해결책: 명명된 구조체 유형
이 초기화를 단순화하는 핵심은 명명된 구조체 유형을 사용하는 것입니다. 이를 통해 구조를 한 번 정의하고 여러 위치에서 사용할 수 있습니다.
type domain struct { id string } type user struct { name string domain domain password string } type password struct { user user } type identity struct { methods []string password password } type auth struct { identity identity } type tokenRequest struct { auth auth }
이름이 지정된 구조체 유형을 사용하면 이제 tokenRequest 구조체를 직접 초기화할 수 있습니다.
req := &tokenRequest{ auth: auth{ identity: identity{ methods: []string{"password"}, password: password{ user: user{ name: os.Username, domain: domain{ id: "default", }, password: os.Password, }, }, }, }, }
이는 다음을 제공합니다. Go에서 중첩된 구조체를 초기화하는 더 간단하고 간결한 방법입니다.
위 내용은 Go에서 중첩된 구조체 초기화를 어떻게 단순화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!