Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Merangkum Medan dan Kaedah Peribadi dalam Struktur Go?

Bagaimana untuk Merangkum Medan dan Kaedah Peribadi dalam Struktur Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-08 06:26:10810semak imbas

How to Encapsulate Private Fields and Methods in Go Structures?

Bidang dan Kaedah Peribadi untuk Struktur

Dalam Go, apabila bekerja dengan struktur, kadangkala terdapat keperluan untuk mempunyai bidang dan kaedah tertentu sebagai peribadi, bermakna hanya ahli struktur itu boleh mengaksesnya, manakala jenis atau fungsi lain dalam skop pakej tidak sepatutnya mempunyai akses.

Untuk mencapai matlamat ini, adalah penting untuk ambil perhatian bahawa dalam Go, pengecam yang bermula dengan huruf besar dieksport daripada pakej dan boleh diakses oleh entiti di luar pakej pengisytiharan. Sebaliknya, pengecam yang bermula dengan huruf kecil hanya boleh diakses dalam pakej itu sendiri.

Jika matlamatnya adalah untuk membolehkan ahli sesuatu jenis boleh diakses oleh ahli jenis itu sahaja, anda perlu meletakkan jenis itu, bersama-sama dengannya. fungsi ahli, dalam pakej yang berasingan, sebagai jenis tunggal dalam pakej itu. Dengan berbuat demikian, jenis dan ahlinya akan menjadi peribadi kepada pakej itu dan tidak boleh diakses dari luar.

Berikut ialah cara mengubah suai kod untuk menjadikan mytype struct dan kaedah doPrivate peribadi:

// Define a separate package for mytype.
package mytypepkg

type mytype struct {
    size string
    hash uint32
}

func (r *mytype) doPrivate() string {
    return r.size
}

Kini, mytype dan doPrivate terkandung dalam pakej mereka sendiri, menjadikannya tidak boleh diakses daripada jenis atau fungsi lain di luar pakej itu.

Atas ialah kandungan terperinci Bagaimana untuk Merangkum Medan dan Kaedah Peribadi dalam Struktur 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