Initialize embedded struct in Go

后端 未结 3 912
情话喂你
情话喂你 2021-02-03 20:16

I have the following struct which contains a net/http.Request:

type MyRequest struct {
    http.Request
    PathParams map[string]strin         


        
相关标签:
3条回答
  • 2021-02-03 20:48

    As Jeremy shows above, the "name" of an anonymous field is the same as the type of the field. So if the value of x were a struct containing an anonymous int, then x.int would refer to that field.

    0 讨论(0)
  • 2021-02-03 20:52
    req := new(MyRequest)
    req.PathParams = pathParams
    req.Request = origRequest
    

    or...

    req := &MyRequest{
      PathParams: pathParams
      Request: origRequest
    }
    

    See: http://golang.org/ref/spec#Struct_types for more about embedding and how the fields get named.

    0 讨论(0)
  • 2021-02-03 20:55

    What about:

    func New(origRequest *http.Request, pathParams map[string]string) *MyRequest {
            return &MyRequest{*origRequest, pathParams}
    }
    

    It shows that instead of

    New(foo, bar)
    

    you might prefer just

    &MyRequest{*foo, bar}
    

    directly.

    0 讨论(0)
提交回复
热议问题