Go에서는 하나의 구조체 유형을 다른 구조체 유형에 포함할 수 있습니다. 이를 통해 외부 구조체에서 필드를 다시 정의할 필요 없이 포함된 구조체의 필드를 재사용할 수 있습니다.
다음 예를 고려하세요.
type MyRequest struct { http.Request PathParams map[string]string }
여기서 MyRequest 구조체에는 http가 포함되어 있습니다. 구조체를 요청합니다. 이는 http.Request의 모든 필드가 MyRequest의 필드로 액세스될 수 있음을 의미합니다. 또한 MyRequest에는 자체 PathParams 필드가 있습니다.
New 함수에서 익명 내부 구조체 http.Request를 초기화하려면 적절한 필드를 설정해야 합니다. 이 작업은 두 가지 방법으로 수행할 수 있습니다:
req := new(MyRequest) req.PathParams = pathParams req.Request = origRequest
복합 리터럴 구문을 사용하면 구조체의 새 인스턴스를 만들고 해당 필드를 한 줄로 초기화할 수 있습니다. 이 경우 새로운 MyRequest 인스턴스를 생성하고 해당 PathParams 필드를 pathParams 인수 값으로 설정합니다. 또한 Request 필드를 origRequest 인수의 값으로 설정합니다.
req := &MyRequest{ PathParams: pathParams Request: origRequest }
포인터 수신기 구문을 사용하면 구조체 포인터의 필드에 직접 액세스할 수 있습니다. 이 경우 MyRequest 인스턴스에 대한 새 포인터를 생성하고 PathParams 및 Request 필드를 직접 설정합니다.
이 두 접근 방식 모두 MyRequest 구조체의 내부 구조체 http.Request를 origRequest 인수입니다.
삽입 및 필드 이름 지정 방법에 대한 자세한 내용은 Go 사양을 참조하세요. http://golang.org/ref/spec#Struct_types.
위 내용은 Go 구조체에 `net/http.Request`를 포함하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!