Bagaimanakah saya boleh Merangkum Medan dan Kaedah Peribadi dalam Go Structs?

Susan Sarandon
Lepaskan: 2024-11-17 08:32:03
asal
620 orang telah melayarinya

How can I Encapsulate Private Fields and Methods in Go Structs?

Merangkum Medan Peribadi dan Kaedah untuk Struktur

Dalam Go, adalah penting untuk memahami konsep keterlihatan untuk medan dan kaedah dalam struct. Secara lalai, medan dan kaedah yang bermula dengan huruf besar dianggap dieksport dan boleh diakses oleh mana-mana kod luaran atau pakej yang mengimport pakej yang mengisytiharkan struct.

Pertimbangkan kod berikut:

package mypackage

type mytype struct {
    Size          string
    Hash          uint32
}

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

func (r *mytype) Do() string {
    return doPrivate("dsdsd")
}
Salin selepas log masuk

Dalam contoh ini, medan Saiz dan Hash, serta kaedah doPrivate, semuanya dieksport kerana huruf besar awalnya. Ini bermakna mana-mana kod di luar pakej mypackage boleh mengakses ahli ini.

Walau bagaimanapun, untuk merangkum kaedah doPrivate dan menghalang akses luaran, kami boleh memanfaatkan peraturan keterlihatan pakej Go. Dengan meletakkan struct mytype dan kaedah doPrivatenya dalam pakej yang berasingan, kami boleh menjadikannya hanya boleh diakses oleh jenis dalam pakej itu.

Begini cara kami boleh mencapai ini:

// mytype.go
package mytype

type Type struct {
    Size          string
    Hash          uint32
}

func (r *Type) doPrivate() string {
    return r.Size
}
Salin selepas log masuk
// mypackage.go
package mypackage

import "./mytype"

func (r *mytype.Type) Do() string {
    return r.doPrivate()
}
Salin selepas log masuk

Dengan memisahkan struct dan kaedah peribadinya ke dalam pakej yang berasingan, kami memastikan bahawa hanya jenis dalam pakej mytype boleh mengakses kaedah doPrivate. Pakej lain, termasuk mypackage, masih boleh menggunakan kaedah Do untuk mengakses ahli awam struct Type, tetapi mereka tidak boleh mengakses kaedah doPrivate secara langsung.

Atas ialah kandungan terperinci Bagaimanakah saya boleh Merangkum Medan dan Kaedah Peribadi dalam Go Structs?. 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