首頁 > 後端開發 > Golang > 你可以在 Go 套件中將結構體欄位和方法設為私有嗎?

你可以在 Go 套件中將結構體欄位和方法設為私有嗎?

DDD
發布: 2024-11-15 10:10:02
原創
712 人瀏覽過

Can you make struct fields and methods private in Go packages?

無法為包中的結構體創建私有字段和方法

問題:

是否可以在Go包中將結構體的欄位和方法設為私有,僅可由成員存取該結構,但不是由其他包函數或外部程式碼實現?

上下文:

考慮以下程式碼片段:

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")
}
登入後複製

在此這種情況下,大小和雜湊欄位以及doPrivate 方法應該封裝在mytype中,其他人無法存取

答案:

雖然Go 允許根據大小寫導出或隱藏標識符,但私有類別成員或資料隱藏的概念並不存在Go.

按照慣例,導出的識別符(以大寫字母開頭)旨在供包內的公共使用。相反,未導出的標識符(以小寫字母初始化)在該包內的存取受到限制。

但是,在給定的包內,無法進一步限制對該包範圍之外的結構成員的存取。為了實現資料封裝,建議的方法是建立一個單獨的包,其中整個結構體及其關聯方法是該包中定義的唯一元素。

以上是你可以在 Go 套件中將結構體欄位和方法設為私有嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板