go語言中同一個包內不同文件使用小寫函數名
Go語言的包管理機制決定了包內可見性。在同一個Go包內,所有文件都可以直接訪問包內聲明的函數和變量,而無需考慮其名稱大小寫。
本文以一個名為gin_demo的項目為例,其結構如下:
gin_demo ├── app │ └── blog │ ├── handler.go │ └── router.go ├── go.mod ├── go.sum ├── main.go └── routers └── routers.go
main.go文件已引入gin_demo/app/blog包,并使用router.go中導出的函數。現在,我們需要在app/blog/router.go中使用handler.go中的ahandler和bhandler函數。
handler.go:
package blog import "github.com/gin-gonic/gin" func ahandler(c *gin.Context) { // 處理邏輯 } func bhandler(c *gin.Context) { // 處理邏輯 }
router.go:
package blog import ( "github.com/gin-gonic/gin" ) func routers(e *gin.Engine) { e.GET("/a", ahandler) e.GET("/b", bhandler) }
由于router.go和handler.go屬于同一個blog包,因此router.go可以直接調用ahandler和bhandler,無需import或將函數名改為大寫。 Go語言包內的可見性允許這種直接調用。 因此,router.go中的代碼無需修改,可以直接使用ahandler和bhandler。
總結:在同一個Go包內,文件之間可以直接訪問包內聲明的函數和變量,無論其名稱是否為大寫字母開頭。 不需要顯式導入或導出。
需要注意的是,雖然包內可見,但是良好的代碼風格仍然建議將對外暴露的函數使用大寫字母開頭,以明確表示其為包的公共接口。 而內部使用的函數,使用小寫字母開頭,可以提高代碼的可讀性和可維護性。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END