【发布时间】:2023-04-08 21:04:02
【问题描述】:
我创建了一个 go 脚本,它可以编译、启动、检查状态并结束我创建的 Web 服务(也在 go 中)。但是,我遇到了障碍。
使用编译功能,我运行以下命令:
go install .
这给出了以下错误:
./script.go:55: main redeclared in this block
previous declaration at ./hello.go:8
这是有道理的,因为我有两个不同的文件,都带有 main func 和 main 包。我还尝试将脚本移动到另一个文件夹,然后将运行的命令更改为:
go install {path}
其中 {path} 等于我要安装/编译的路径。然后我得到以下错误:
exit status 1: can't load package: package /var/www/test.com/go: import "/var/www/test.com/go": cannot import absolute path
因此,总而言之,我只想到了一种解决方案(如果我的方法不是最好的,我愿意听取其他人的意见)。我的想法是排除脚本文件与其余文件一起编译,但我不确定如何。
我做了一些研究,但找不到简单的方法(例如 go install 命令的 --exclude 标志)。有人知道如何完成我想要实现的目标吗?
谢谢。
【问题讨论】:
-
我认为您尝试将文件分成不同的包是正确的方法。最新的错误告诉您
go的构建系统未能加载指定的包,这是一个不同的错误(与您的原始问题没有直接关系)。在不知道您的GOPATH值和项目的目录结构的情况下,很难提出解决此问题的解决方案。 -
如“无法导入绝对路径”错误所示,go 工具使用导入路径,而不是绝对路径。使用导入路径运行
go install。
标签: go package installation