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

Linda Hamilton
Lepaskan: 2024-11-12 05:30:02
asal
986 orang telah melayarinya

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
}
Salin selepas log masuk

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
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan