Go 嚴格的包可見性規則旨在保持 API 表面定義明確且獨特。然而,當專案成長時,不可能將實現細節封裝在較小的套件中而不將其暴露給外部消費者。
Go 1.4 中提出了解決這一困境的一個解決方案:引入「內部」包。
「內部」套件只能由同一樹中的其他套件匯入。此規則旨在在公共包和內部包之間創建明確的分離,防止內部實現細節的意外暴露。
嘗試從其父樹外部匯入內部套件會導致錯誤:
import ( "runtime/internal/atomic" "runtime/internal/sys" )
錯誤:
匯入運行時/內部/原子:不使用內部套件允許
在主套件中使用內部函數的問題源於保持實現細節隔離的願望。不幸的是,這不是內部包的預期用例。
將實作細節封裝在內部套件中在 Go 中是不切實際的。相反,請考慮將程式碼庫重構為具有明確定義的公共介面的不同模組。這種方法與 Go 強調清晰的 API 邊界一致,並提高了程式碼的可維護性和可擴展性。
以上是Go的內部包能真正封裝實現細節嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!