>  기사  >  백엔드 개발  >  Go 구조체에 `net/http.Request`를 포함하는 방법은 무엇입니까?

Go 구조체에 `net/http.Request`를 포함하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-12 05:30:02984검색

How to Embed a `net/http.Request`  in a Go Struct?

Go 구조체에 net/http.Request 포함

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.