使用其他文件的函数是其他目录的Golang

使用其他文件的函数是其他目录的Golang,go,model-view-controller,Go,Model View Controller,我想在我的主方法中使用一个名为“controllers”的文件夹中的方法,但事实证明,当我启动程序时,它表示未找到或定义函数,我尝试按照Golang文档中的package guide(软件包指南)进行操作,但Go build and Go install(Go build and Go install)没有起作用,我只想知道如何使用其他文件夹中的文件以获得更高的顺序,这里是代码和我的文件树,首先是:UserController.go,这里是functionLoadRecordsFromFile(

我想在我的主方法中使用一个名为“controllers”的文件夹中的方法,但事实证明,当我启动程序时,它表示未找到或定义函数,我尝试按照Golang文档中的package guide(软件包指南)进行操作,但Go build and Go install(Go build and Go install)没有起作用,我只想知道如何使用其他文件夹中的文件以获得更高的顺序,这里是代码和我的文件树,首先是:UserController.go,这里是functionLoadRecordsFromFile()。。。(重复…我尝试使用文档中的go build and go install,但不起作用…)

档案是

-GolangProject
-Main.go
-controllers
    --UserController.go

您需要对代码进行一些更改

  • 首先,您需要在
    UserController.go
    中更改包名。让我们只使用
    控制器
    作为包

    包控制器
    进口(
    “net/http”
    “日志”
    )
    func LoadRecordsFromFile(w http.ResponseWriter,r*http.Request){
    //最多上载10 MB文件
    
    r、 ParseMultipartForm(10)您能添加实际错误吗?您需要导入声明了要引用的标识符的包。您还需要在引用该标识符时对其进行包限定。@GiovanniMosquera您只能直接引用同一包(即同一文件夹)中声明的标识符(非递归,即子文件夹不计算在内)。除内置标识符外,任何其他标识符都必须使用包限定符引用,但要使用包限定标识符,首先需要导入您尝试使用的包。就像导入
    chi
    和使用
    chi引用NewRouter一样。NewRouter
    导入controllers软件包,并通过使用软件包名称对其进行限定来引用该功能。请阅读官方文件。“我已经阅读了,但我不是很清楚”然后你应该再读一遍,直到你明白为止。@GiovanniMosqueraNow我的代码工作得很好!我真的非常感谢你,也非常感谢你没有像其他人一样告诉我“阅读如何阅读代码:)@GiovanniMosquera,我在我的答案中添加了一些注释。你应该检查一下。
    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