【发布时间】:2020-09-02 15:20:43
【问题描述】:
我想在我的 main 方法中使用一个名为“controllers”的文件夹中的方法,但事实证明,当我启动程序时,它说该函数未找到或未定义,我尝试按照包指南进行操作在 Golang 文档中,但使用 Go build 和 Go install 这不起作用,我只想知道如何使用其他文件夹中的文件来获得更多订单,这里是代码和我的文件树,首先: UserController.go,这里是 funcionLoadRecordsFromFile()...(重复...我尝试使用 go build 并从文档中安装,但不起作用...)
package main
import (
"net/http"
"log"
)
func LoadRecordsFromFile(w http.ResponseWriter, r *http.Request) {
// Maximum upload of 10 MB files
r.ParseMultipartForm(10 << 20)
}
这是我的 main.Go,如果我想使用来自 UserController.go 的函数 LoadRecordsFromFile()
package main
import (
"net/http"
"github.com/go-chi/chi"
"log"
)
func main() {
r := chi.NewRouter()
r.Post("/loadUsers", func(w http.ResponseWriter, r *http.Request) {
LoadRecordsFromFile(w,r)
})
log.Print("Server started in port 3000")
http.ListenAndServe(":3000", r)
}
档案是……
-GolangProject
-Main.go
-controllers
--UserController.go
【问题讨论】:
-
你能添加实际的错误吗?
-
您需要导入声明了您要引用的标识符的包。您还需要在引用该标识符时对其进行打包限定。
-
@GiovanniMosquera 您只能直接引用在同一包中声明的标识符,即同一文件夹(非递归,即子文件夹不计算在内)。除内置标识符外,任何其他标识符都必须使用包限定符引用,但要能够使用包限定标识符,您首先需要导入您尝试使用的包。就像您导入
chi并使用chi.NewRouter引用 NewRouter 一样,您需要导入控制器包并通过使用包名称对其进行限定来引用函数。 -
请阅读官方文档中的How to write go code。
-
“我已经读过了,但我不是很明白” 那你应该再读一遍,一直读到明白为止。 @GiovanniMosquera