我正在尝试创建一个Web应用程序,而不使用像Revel这样的框架,只使用Gorilla工具包,
到目前为止,我的应用程序结构如下:
/App
- Controllers
- Index.go
- Views
- Index.html
- Public
- css
- js
- img
- main.go
我的main.go
看起来像是:
package main
import (
"github.com/gorilla/mux"
"net/http"
)
func main() {
r := mux.NewRouter()
r.HandleFunc("/", Index)
http.Handle("/", r)
http.ListenAndServe(":8080", nil)
}
Index.go
看起来像
package main
import (
"fmt"
"net/http"
)
func Index(res http.ResponseWriter, req *http.Request) {
fmt.Println("Here")
}
但是当我go run main.go
它说Index未定义时,我不确定如何从子目录中的另一个文件调用函数。任何信息都会非常感谢。
答案 0 :(得分:0)
Go约会阻止了这一点。您必须将Index()保留在主程序包中。
一旦你有一些可以分离出来的代码,你就会创建一个子目录(包)并将其导入main。
答案 1 :(得分:0)
Go code organization rules每个包需要一个目录。由于您的包main
分为根目录和controllers
目录,因此您的代码组织无法正常工作。
您可以将controllers
打包,然后将其导入main
,如果您要投放大型代码库,或者只是将控制器文件重新定位到根目录。