在 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中文網其他相關文章!