我有一点问题,每次我跑步时都要运行> filename<'在对我的问题进行更改后,开始执行需要几秒钟。
我尝试使用这样一个简单的程序:
package main
import "fmt"
func main() {
fmt.Println("Output")
}
打印结果花了大约18秒钟。
关于什么可能导致这个问题的想法?
顺便说一句,我在窗户上。
先谢谢
答案 0 :(得分:3)
$ go run
命令始终将代码符合临时二进制文件,然后在每次运行时执行它。
要解决这个问题,你可以做$ go build -i main.go
,它将作为.a
文件单独编译依赖项(我猜这是最长的部分,因为它需要时间来构建依赖项)和然后用$ ./main
执行它,每次执行应该比$ go run
快。
您还可以运行$ go get -u ./...
来更新所有deps,使用-x标志构建将显示工具链是否找到不兼容的版本。
$ go install
在临时目录中构建命令,然后将其移动到$ GOPATH / bin,这样您就可以在不使用路径$ main
的情况下执行它。
如果代码有变化,最后两个命令需要重建/重新安装。
答案 1 :(得分:1)
在MacOS(OSX)Catalina上使用新编译的golang二进制文件遇到相同问题时发现了此问题。
简而言之,操作系统现在会扫描新的二进制文件以查找恶意软件,通常是在首次启动时执行此操作,但是我发现它连续执行了3-5次,此后二进制文件被列入了白名单。并正常开始显然,一旦对代码进行了更改并重新编译,扫描就会再次发生。扫描过程最多需要20秒,这会破坏golangs的快速迭代周期。
对我来说解决方法如下:
sudo spctl developer-mode enable-terminal
然后转到首选项->安全和隐私->隐私
在左侧的列表中,您现在将具有“开发人员工具”部分,其中列出了OSX内置终端。选中该复选框以启用它,和/或添加您可能要用来开发的其他任何内容(iTerm,VS Code等)
从这些应用程序运行二进制文件时,扫描停止,并且一切恢复正常。