首頁  >  文章  >  後端開發  >  如何在 Go 結構中嵌入 `net/http.Request` ?

如何在 Go 結構中嵌入 `net/http.Request` ?

Linda Hamilton
Linda Hamilton原創
2024-11-12 05:30:02943瀏覽

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