为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
GCT1015 2023-06-12 14:32:05
我是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.goapplication.gocontrollers    factors.go主要去:package mainfunc main()  {    application := Application{}    application.Initialization()    application.Run("localhost:8000")}应用程序去:package mainimport (    "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 controllersimport (    "net/http")func (application *Application) GetFactors(rw http.ResponseWriter, request *http.Request) {    // code}
查看完整描述

1 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

main.go

routes

    routes.go

controllers

    factors.go

models

    factors.go

主要去:


import (

    "your_project_name/routes"

)


func main()  {

    // code

    router := mux.NewRouter()

    routes.Use(router)

    // code

}

路线/路线.去:


package routes


import (

    "github.com/gorilla/mux"

    "your_application_name/controllers"

)


func Use(router *mux.Router) {

    router.HandleFunc("/api/factors", controllers.GetFactors).Methods("GET")

}

控制器/factors.go:


package controllers


var GetFactors = func(res http.ResponseWriter, req *http.Request) {

    // code

}


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信