無法為包中的結構體創建私有字段和方法
問題:
是否可以在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中文網其他相關文章!