在初始化嵌入式围棋结构(Initialize embedded struct in Go)

2019-07-31 19:25发布

我有以下的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

Answer 1:

关于什么:

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

它显示的是代替

New(foo, bar)

你可能更喜欢只

&MyRequest{*foo, bar}

直。



Answer 2:

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

要么...

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

请参阅: http://golang.org/ref/spec#Struct_types更多有关嵌入和领域得到的命名方式。



Answer 3:

正如上面杰里米示出,所述一个匿名字段的“name”是一样的场的类型。 因此,如果x的值是包含匿名INT一个结构,然后将x.int指的领域。



文章来源: Initialize embedded struct in Go
标签: struct go