Golang 如何在其他包文件中使用 struct?

我是Golang的新手,需要一些帮助。


正如您在下面的代码中看到的,我正在尝试在 Golang 中创建 REST API。我使用mux(Gorilla Mux) 和pq(PostgreSQL driver) 作为第三方库。不想使用 ORM。


在文件内部application.go,我有InitializeRoutes一个包含所有可行路线列表的函数。GetFactors函数处理这些路由之一。我试图GetFactors在其他名为factors.go. 内部factors.go文件我想使用Application在application.go. 如何正确制作?现在你可以看到它们在不同的包中。这就是为什么factors.go文件看不到Application结构的原因。


项目结构:


main.go

application.go

controllers

    factors.go

主要去:


package main


func main()  {

    application := Application{}

    application.Initialization()

    application.Run("localhost:8000")

}

应用程序去:


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

}

控制器/factors.go:


package controllers


import (

    "net/http"

)


func (application *Application) GetFactors(rw http.ResponseWriter, request *http.Request) {

    // code

}


GCT1015
浏览 116回答 1
1回答

湖上湖

main.goroutes    routes.gocontrollers    factors.gomodels    factors.go主要去:import (    "your_project_name/routes")func main()  {    // code    router := mux.NewRouter()    routes.Use(router)    // code}路线/路线.去:package routesimport (    "github.com/gorilla/mux"    "your_application_name/controllers")func Use(router *mux.Router) {    router.HandleFunc("/api/factors", controllers.GetFactors).Methods("GET")}控制器/factors.go:package controllersvar GetFactors = func(res http.ResponseWriter, req *http.Request) {    // code}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go