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:
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.
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!