35

我有以下内容struct,其中包含net/http.Request

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

现在我想http.Request在以下函数中初始化匿名内部结构:

func New(origRequest *http.Request, pathParams map[string]string) *MyRequest {
    req := new(MyRequest)
    req.PathParams = pathParams
    return req
}

如何使用参数初始化内部结构origRequest

4

3 回答 3

35
req := new(MyRequest)
req.PathParams = pathParams
req.Request = origRequest

或者...

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

有关嵌入以及字段如何命名的更多信息,请参阅:http ://golang.org/ref/spec#Struct_types。

于 2012-09-21T20:15:13.670 回答
19

关于什么:

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

它表明,而不是

New(foo, bar)

你可能更喜欢

&MyRequest{*foo, bar}

直接地。

于 2012-09-21T20:38:52.093 回答
7

正如上面 Jeremy 所示,匿名字段的“名称”与字段的类型相同。因此,如果 x 的值是一个包含匿名 int 的结构,那么 x.int 将引用该字段。

于 2012-09-21T21:28:01.747 回答