[英]How in Golang use struct in other package file?
我是Golang的新手 ,需要幫助。
如您在下面的代碼中看到的,我正試圖在Golang中創建REST API。 我使用mux
(大猩猩Mux)和pq
(PostgreSQL驅動程序)作為第三方庫。 不想使用ORM。
在application.go
文件中,我具有帶有所有可用路由列表的InitializeRoutes
函數。 GetFactors
函數處理這些路由之一。 我特林定義GetFactors
在調用的其他文件中的函數邏輯factors.go
。 里面factors.go
文件我想使用Application
其在定義結構application.go
。 如何正確制作? 現在,您可以看到它們位於不同的軟件包中。 因此, factors.go
文件沒有看到Application
結構。
項目結構 :
main.go
application.go
controllers
factors.go
main.go:
package main
func main() {
application := Application{}
application.Initialization()
application.Run("localhost:8000")
}
application.go :
package main
import (
"database/sql"
"github.com/gorilla/mux"
"log"
"net/http"
"rest-api/configurations"
)
type Application struct {
Router *mux.Router
Database *sql.DB
}
func (application *Application) Initialization() {
var err error
application.Database, err = configurations.DatabaseConnection()
if err != nil {
log.Fatal(err)
}
application.Router = mux.NewRouter()
application.Router.StrictSlash(true)
application.InitializeRoutes()
}
func (application *Application) Run(address string) {
log.Fatal(http.ListenAndServe(address, application.Router))
}
func (application *Application) InitializeRoutes() {
application.Router.HandleFunc("/api/factors", application.GetFactors).Methods("GET")
// other code
}
controllers / factors.go :
package controllers
import (
"net/http"
)
func (application *Application) GetFactors(rw http.ResponseWriter, request *http.Request) {
// code
}
好吧,最后我決定重新設計項目結構。
main.go
routes
routes.go
controllers
factors.go
models
factors.go
main.go :
import (
"your_project_name/routes"
)
func main() {
// code
router := mux.NewRouter()
routes.Use(router)
// code
}
routes / routes.go :
package routes
import (
"github.com/gorilla/mux"
"your_application_name/controllers"
)
func Use(router *mux.Router) {
router.HandleFunc("/api/factors", controllers.GetFactors).Methods("GET")
}
controllers / factors.go :
package controllers
var GetFactors = func(res http.ResponseWriter, req *http.Request) {
// code
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.