以前没有关于在终端中从零创建项目的知识,我已经创建了一个文件夹,cd进入它,然后运行它为我创建了一个go.mod文件,然后我创建了main.go文件,它构建得很好。go mod init my_project_name然后我创建了一个文件夹,并在里面添加了一个带有包名称的go文件(与目录相同),并在其中创建了一个结构。接下来,我试图在主包中导入该包,但是当我尝试在终端上构建时,它给了我这个错误go: cannot determine module path for source directory /Users/berkcan/workspace/go/my_project_name (outside GOPATH, module path must be specified)在谷歌搜索并且无法找到我的问题的解决方案之后,我将项目导入到心爱的Intellij IDE中,并启用了Go模块集成,然后一切都完美无缺。首先,我认为IDE在构建项目时会做一些魔术,但即使我在终端中尝试命令,它也会构建。但是我看不出项目结构或go.mod文件中的新行有什么不同。go build那么发生了什么,当我勾选go模块集成框时,智能IDE做了什么,我可以在没有智能IDE的情况下在终端上启用它?这是勾选时IDE中选项的照片
1 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
智能IDEA加围棋插件或后台GoLand有两种模式来获取有关软件包的信息(简化):
戈帕斯。IDEA扫描您的目录以构建软件包的内部索引,并提供代码完成,解析等。
$GOPATH
转到模块。IDEA 执行以解析您的依赖项,并扫描您的目录(默认值 为 )以查找软件包。如果它们不存在,IDEA将执行 。完成这些操作后,IDE 将提供所有内置功能,如代码完成、导航等。
go list -m -json
$GOPATH/pkg/mod
GOMODCACHE
go mod download
这两种模式都不会更改您的 Go 或环境变量以及终端中的行为。在设置中选中“启用 Go 模块集成”选项时,IDE 只需将模式从扫描切换到执行并从 Go 模块缓存中解析依赖项。$GOPATH
go list
总而言之,智能IDEA没有任何魔力。我想它与终端内的自定义Go环境变量有关,特别是如果您没有将这些变量传递给GUI应用程序(例如,您在文件中指定了它并通过桌面条目而不是终端运行IDE),IntelliJ IDEA不会继承它们。您可以比较本地终端内部的输出和 IDE 内部的内置输出 (查看|工具窗口|终端)并找出差异。GO111MODULE
.zshrc
go env
- 1 回答
- 0 关注
- 200 浏览
添加回答
举报
0/150
提交
取消