Go 项目结构和导入包
我刚刚开始学习Go,我想知道如何最好地组织我的项目和导入包。我在Go 项目结构和导入包,go,Go,我刚刚开始学习Go,我想知道如何最好地组织我的项目和导入包。我在$GOPATH/src/my_project创建了一个项目。它包含文件main.go和包含文件bar.go的文件夹foo $GOPATH/src/my_项目 梅因,加油 福/ 酒吧 我的main.go如下所示 package main import ( "./foo" "fmt" ) func main() { fmt.Println("M
$GOPATH/src/my_project
创建了一个项目。它包含文件main.go
和包含文件bar.go
的文件夹foo
- $GOPATH/src/my_项目
- 梅因,加油
- 福/
- 酒吧
package main
import (
"./foo"
"fmt"
)
func main() {
fmt.Println("Main")
foo.Baz()
}
这是食物
package foo
import "fmt"
func Baz() {
fmt.Println("Baz")
}
它以我期望的方式工作,但我想知道这是否真的是构建项目和导入包的正确方式,因为大多数教程只从github导入包,而从不从本地导入包
感谢您的回答。Go中可以使用相对导入,但不鼓励使用 相反,您总是使用包的完整路径。在您的情况下,这将是
my\u project/foo
。这是相对于GOPATH/src
文件夹的
然而,由于我们现在有了Go模块
,这使得事情开始时有点复杂,但从长远来看有很多优势
就在今天早些时候,我就如何使用Go模块建立一个新项目给出了一个分步指南:
本指南中的模块名称是项目的基础,模块中的所有路径都基于该路径构建。让我举一个例子:
假设您将模块命名为github.com/yourName/myProject
。然后可以使用github.com/yourName/myProject/foo导入子包foo
注意:模块路径应该与git URL相同,这样您就可以使用
go-get
获取模块。如果您不打算将项目上传到github或其他git URL,您仍然应该选择一个唯一的名称。从您拥有的域开始是一个好主意——为了唯一性。这里没有错。您可以使用搜索栏阅读更多问题及其答案忽略随机教程,阅读“如何编写Go代码”,放弃GOPATH构建并使用模块。