Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Memulakan Struktur Terbenam dalam Go: Panduan Dua Pendekatan

Cara Memulakan Struktur Terbenam dalam Go: Panduan Dua Pendekatan

Susan Sarandon
Susan Sarandonasal
2024-11-17 15:44:02309semak imbas

How to Initialize an Embedded Struct in Go: A Two-Approach Guide

Memulakan Struktur Terbenam dalam Go

Apabila bekerja dengan struct terbenam dalam Go, senario biasa melibatkan memulakan struct tanpa nama dalaman. Artikel ini menangani senario sedemikian, memberikan pemahaman yang jelas tentang cara untuk mencapai permulaan menggunakan dua pendekatan.

Pertimbangkan struct terbenam MyRequest berikut:

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

Untuk memulakan MyRequest, kita perlu menetapkan nilai-nilai untuk struct http.Request tertanamnya. Begini cara ia boleh dilakukan:

func New(origRequest *http.Request, pathParams map[string]string) *MyRequest {
    req := new(MyRequest)
    req.PathParams = pathParams
    req.Request = origRequest
    return req
}

Dalam pendekatan ini, kami mula-mula mencipta objek MyRequest baharu dan menetapkannya kepada req. Kami kemudian menetapkan medan PathParams dengan sewajarnya. Selepas itu, kami mengakses dan menetapkan struct http.Request tertanam dengan merujuk req.Request.

Sebagai alternatif, kami juga boleh memulakan struct terbenam menggunakan sintaks berikut:

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

Di sini, kami buat struct tanpa nama dengan medan yang diperlukan. Adalah penting untuk memberi awalan nama struct terbenam dengan '&' untuk permulaan yang betul. Ini menghasilkan objek MyRequest dengan nilai yang dikehendaki.

Kedua-dua pendekatan berkesan memulakan struct http.Request tertanam dalam MyRequest, membolehkan anda menyesuaikan dan menggunakannya mengikut keperluan. Untuk rujukan lanjut, rujuk spesifikasi Go pada medan yang dinamakan untuk struktur terbenam.

Atas ialah kandungan terperinci Cara Memulakan Struktur Terbenam dalam Go: Panduan Dua Pendekatan. 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