Я новичок в Golang и мне нужна помощь.
Как видно из кода ниже, я пытаюсь создать REST API в Golang.Я использую mux
(Gorilla Mux) и pq
(драйвер PostgreSQL) в качестве сторонних библиотек.Не хочу использовать ORM.
Внутри application.go
файла. У меня есть функция InitializeRoutes
со списком всех доступных маршрутов.GetFactors
функция обрабатывает один из этих маршрутов.Я пытаюсь определить GetFactors
функциональную логику в другом файле с именем factors.go
.Внутри файла factors.go
я хочу использовать структуру Application
, которая была определена в application.go
.Как сделать это правильно?Прямо сейчас, как вы можете видеть, они находятся в разных пакетах.Вот почему файл factors.go
не видит Application
struct.
Структура проекта :
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 / factor.go :
package controllers
import (
"net/http"
)
func (application *Application) GetFactors(rw http.ResponseWriter, request *http.Request) {
// code
}