Назовите пакет имен
Как правильно ссылаться на пакеты проектов? У меня есть следующая структура папок:
/sbp
/models.go
/controllers.go
/main.go
В main.go
Я хотел бы назвать свой контроллер действия от sbp.controllers
, Я не могу найти способ правильно ссылаться на него
main.go
package main
import (
"net/http"
...
"github.com/pressly/chi"
)
var sess = session.Must(session.NewSession(&aws.Config{
Region: aws.String("ap-southeast-1"),
}))
var dynamo = dynamodb.New(sess)
func main() {
r := chi.NewRouter()
r.Get("/", GetInvestments) // How do I call sbp.controller.GetInvestments?
r.Post("/", AddInvestment)
http.ListenAndServe(":8080", r)
}
sbp/controller.go
package sbp
import (
"net/http"
"time"
"github.com/pressly/chi/render"
)
// AddInvestment Adds an investment
func AddInvestment(w http.ResponseWriter, r *http.Request) {
...
}
// GetInvestments Gets list of investments
func GetInvestments(w http.ResponseWriter, r *http.Request) {
...
}
Я попытался импортировать "sbp / controller" или даже "github.com/jiewmeng/finance/sbp/controller", но они, кажется, автоматически удаляют мой VSCode, так что я считаю его недействительным?
2 ответа
Похоже, ваш редактор работает автоматически goimports
, что означает, что он удалит неиспользованный импорт. Так что просто добавив его в свой imports
раздел не достаточно хорош; Вы также должны использовать импорт.
Похоже, ваш правильный путь импорта будет "github.com/jiewmeng/finance/sbp". Тогда вам также нужно сослаться на это:
package main
import (
// other imports
"github.com/jiewmeng/finance/bp"
)
func main() {
// whatever
http.Handle("/somepath", http.HandlerFunc(sbp.AddInvestment))
}
Прежде всего вам нужно определить местоположение вашего исходного кода.
Возможно, это дополнительный путь после $GOPATH/src/(path_to_your_project)
Так что в этом случае вы должны импортировать
import "path_to_your_project/sbp"
И окончательный код:
func main() {
r := chi.NewRouter()
r.Get("/", sbp.GetInvestments)
r.Post("/", sbp.AddInvestment)
http.ListenAndServe(":8080", r)
}