Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Mengawal Medan Struktur Yang Dieksport dalam Go?

Bagaimanakah Saya Mengawal Medan Struktur Yang Dieksport dalam Go?

DDD
DDDasal
2024-12-01 00:34:11172semak imbas

How Do I Control Which Struct Fields Are Exported in Go?

Mengeksport Medan Struktur dalam Go

Apabila menggunakan struct untuk mewakili data dalam Go, adalah penting untuk mempertimbangkan penggunaan huruf besar bagi nama medan. Mengikut konvensyen, hanya medan yang bermula dengan huruf besar dieksport, menjadikannya kelihatan di luar pakej semasa.

Isu Struktur CouchDB

Dalam kod yang disediakan, struct Orang mempunyai medan bernama Umur dengan huruf besar, manakala nama adalah huruf kecil. Akibatnya, hanya medan Umur dieksport apabila struct diserahkan kepada kaedah PostDocument perpustakaan CouchDB.

Marshaling dan Keterlihatan Medan

Prinsip yang sama digunakan apabila menyusun JSON menggunakan pakej json. Hanya medan yang dieksport (bermula dengan huruf besar) akan disertakan dalam output. Tingkah laku ini diterangkan dalam spesifikasi bahasa Go: http://golang.org/ref/spec#Exported_identifiers.

Mengatasi Halimunan Medan

Untuk memasukkan medan huruf kecil dalam pangkalan data atau output JSON, gunakan "tag" dalam definisi struct. Contohnya:

type Sample struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

Teg menyediakan pemetaan eksplisit antara nama medan yang dieksport (Nama dan Umur) dan huruf kecil yang setara (nama dan umur).

Dengan menggunakan teg atau mengikuti konvensional menggunakan nama medan huruf besar untuk medan yang dieksport, anda boleh memastikan bahawa semua medan dalam struct anda dikendalikan dengan betul apabila berinteraksi dengan pihak ketiga perpustakaan atau melaksanakan operasi JSON.

Atas ialah kandungan terperinci Bagaimanakah Saya Mengawal Medan Struktur Yang Dieksport dalam Go?. 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