Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membenamkan `net/http.Request` dalam Go Struct?

Bagaimana untuk Membenamkan `net/http.Request` dalam Go Struct?

Linda Hamilton
Linda Hamiltonasal
2024-11-12 05:30:021019semak imbas

How to Embed a `net/http.Request`  in a Go Struct?

Membenamkan net/http.Request dalam Go Struct

Dalam Go, anda boleh membenamkan satu jenis struct dalam yang lain. Ini membolehkan anda menggunakan semula medan daripada struct terbenam tanpa perlu mentakrifkannya semula dalam struct luar.

Pertimbangkan contoh berikut:

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

Di sini, struct MyRequest membenamkan http. Permintaan struct. Ini bermakna mana-mana medan http.Request boleh diakses sebagai medan MyRequest. Selain itu, MyRequest mempunyai medan PathParams sendiri.

Untuk memulakan struct dalaman tanpa nama http.Request dalam fungsi Baharu, anda perlu menetapkan medan yang sesuai. Anda boleh melakukan ini dalam dua cara:

Menggunakan Literal Komposit

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

Sintaks literal komposit membolehkan anda mencipta tika baharu bagi struct dan memulakan medannya dalam satu baris. Dalam kes ini, kami mencipta contoh MyRequest baharu dan menetapkan medan PathParamsnya kepada nilai argumen pathParams. Kami juga menetapkan medan Permintaan kepada nilai argumen origRequest.

Menggunakan Penerima Penunjuk

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

Sintaks penerima penuding membolehkan anda mengakses medan penuding struct secara terus. Dalam kes ini, kami mencipta penunjuk baharu kepada contoh MyRequest dan menetapkan medan PathParams dan Requestnya secara langsung.

Kedua-dua pendekatan ini akan memulakan struct dalaman http.Request dalam struct MyRequest dengan nilai origRequest argument.

Untuk mendapatkan maklumat lanjut tentang pembenaman dan cara medan dinamakan, sila rujuk spesifikasi Go di http://golang.org/ref/spec#Struct_types.

Atas ialah kandungan terperinci Bagaimana untuk Membenamkan `net/http.Request` dalam Go Struct?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn