我正在构建一个简单的应用程序,在阅读了关于构建应用程序的文档之后,我仍然感到困惑.
我想要这个结构:
app.go
在里面app.go,我有以下内容:
package main
import (
"net/http"
// I have tried the following:
"practice/models/a"
"practice/models/b"
"practice/models"
"$GOPATH/practice/models/a"
"$GOPATH/practice/models/b"
"$GOPATH/practice/models"
...
)
func main() {
http.HandleFunc("/a", AHandler)
http.HandleFunc("/b", BHandler)
http.ListenAndServe(":8080", nil)
}
Run Code Online (Sandbox Code Playgroud)
A和B型号如下所示:
package models
import "net/http"
func AHandler(w http.ResponseWriter, r *http.Request) {
// code
}
Run Code Online (Sandbox Code Playgroud)
两个问题:
世界上哪些是导入这些文件的正确方法?我是否真的必须将它们推送到github以便能够引用它们?我知道$ GOPATH是本地机器上整个go工作区的命名空间.我的$ GOPATH设置为包含此目录.
我是否需要在这些文件中定义主方法?我可以只导出一个函数并将其作为处理函数吗?
谢谢.
我咨询过这些文档
小智 8
我认为另一个答案已经过时,您不需要GOPATH再使用。跑步:
go mod init yellow
Run Code Online (Sandbox Code Playgroud)
然后创建一个文件yellow.go:
package yellow
func Mix(s string) string {
return s + "Yellow"
}
Run Code Online (Sandbox Code Playgroud)
然后创建一个文件orange/orange.go:
package main
import "yellow"
func main() {
s := yellow.Mix("Red")
println(s)
}
Run Code Online (Sandbox Code Playgroud)
然后构建:
go build
Run Code Online (Sandbox Code Playgroud)
https://golang.org/doc/code.html
请参见如何编写Go代码.
在$ GOPATH/src下创建目录结构.
导入包如下:
import (
"practice/routers"
"practice/models"
...
)
Run Code Online (Sandbox Code Playgroud)
像这样使用导入的包:
func main() {
http.HandleFunc("/a", models.AHandler)
http.HandleFunc("/b", models.BHandler)
http.ListenAndServe(":8080", nil)
}
Run Code Online (Sandbox Code Playgroud)
即使您在文件路径中使用"github.com",也无需推送到github.com.
主程序包中的主要功能是应用程序的入口点.不要在main之外的包中定义主要功能.
| 归档时间: |
|
| 查看次数: |
1992 次 |
| 最近记录: |