Windows 10上挂起的Go程序

Windows 10上挂起的Go程序,go,windows-10,Go,Windows 10,所有挂在Windows上的Go程序都有问题,即使是一个简单的Hello world程序。我已经重新安装了Golang多次,没有任何变化。我也不能使用Ctrl+X或Ctrl+D来关闭程序。它仍然会生成将显示在进程监视器上的进程。但我不能从那里或从命令行杀死它 reddit上也发布了类似的问题。但这仍然没有解决方案 这是我现在正试图运行的程序: package main import "fmt" func main() { fmt.Println("Hello, world!") }

所有挂在Windows上的Go程序都有问题,即使是一个简单的Hello world程序。我已经重新安装了Golang多次,没有任何变化。我也不能使用Ctrl+X或Ctrl+D来关闭程序。它仍然会生成将显示在进程监视器上的进程。但我不能从那里或从命令行杀死它

reddit上也发布了类似的问题。但这仍然没有解决方案

这是我现在正试图运行的程序:

package main

import "fmt"

func main() {
    fmt.Println("Hello, world!")
}
使用
go run-x运行它会得到以下输出:

WORK=C:\Users\User\AppData\Local\Temp\go-build882050150
mkdir -p $WORK\command-line-arguments\_obj\
mkdir -p $WORK\command-line-arguments\_obj\exe\
cd E:\go\src\github.com\test\hello
"C:\\Go\\pkg\\tool\\windows_amd64\\compile.exe" -o "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150\\command-line-arguments.a" -trimpath "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150" -p main -complete -buildid 0180ed6e175ea3e4bc497fc21fe0319a733a9c8e -D _/E_/go/src/github.com/test/hello -I "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150" -pack "E:\\go\\src\\github.com\\test\\hello\\main.go"
cd .
"C:\\Go\\pkg\\tool\\windows_amd64\\link.exe" -o "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150\\command-line-arguments\\_obj\\exe\\main.exe" -L "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150" -w -extld=gcc -buildmode=exe -buildid=0180ed6e175ea3e4bc497fc21fe0319a733a9c8e "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150\\command-line-arguments.a"
$WORK\command-line-arguments\_obj\exe\main.exe
在那之后,它只是坐在那里,什么也不做。不管我运行什么程序,它都将永远挂起

不知道从这里到哪里去。我并不是真的在Windows上开发,但我试着在Ubuntu上进行交叉编译,遇到了交叉编译二进制文件的问题,我想我应该直接在Windows上编译。但我的Windows似乎不喜欢Golang编译的二进制文件

Go版本是1.5.1 windows/amd64

以下是
go-env
的输出:

set GOARCH=amd64
set GOBIN=
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=E:\go
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GO15VENDOREXPERIMENT=
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set CGO_ENABLED=1

阿瓦斯特在装聋作哑。禁用了Avast,所有程序都正常运行

当然,禁用Avast并不理想,因此我必须找到一种排除go文件的方法。不幸的是,除非为二进制文件设置单独的排除,否则无法排除go编译文件本身。但是,排除go特定目录将起作用

我最终排除了go for me的安装位置,这是我的
C:\go
和GOPATH
E:\go
目录

只要二进制文件是从这两个目录中的任何一个运行的,这在很大程度上都是有效的,但是我仍然在使用
go-run
命令时遇到问题。使用
go-run-x
命令,我能够找到go将临时编译的二进制文件放在哪里。这最终出现在
C:\Users\username\AppData\Local\Temp\go-build1234\
。但是,每次使用go run时,go都会创建一个新目录,因此我必须在Avast上创建一个排除项,并设置两个通配符
C:\Users\username\AppData\Local\Temp\go build*\*
。现在程序将正确运行

以下是我最终排除的情况:

你在运行任何类型的防病毒软件吗?@JimB,是的。Avast阻止了所有go文件的运行,因为它们与更常见的C编译二进制文件相比有多大的不同。最终排除了我安装Go和GOPATH的目录。还必须在临时目录中添加一个排除项,Go在运行程序时将使用该临时目录。对我来说,这是
C:\Users\user\AppData\Local\Temp\go build*\*
。为文件系统屏蔽添加了排除项,并在“常规”下添加了排除项部分。@JDWardle如果您自己找到了解决方案,您应该让有相同问题的人更容易看到它。谢谢,工作顺利。但是,对于排除,您必须运行“go-run-x filename.go”并检查使用的确切路径。例如,对我来说,路径是“C:\Users\WILDEX~1\AppData\…”而不是“C:\Users\Wildex999\AppData\…”。我必须准确地输入这些信息才能让它工作,即使它们都是同一条路径。谢谢。每次我的电脑运行Go代码时,我都变得非常不安。仅供参考,在您的Avast中添加排除项的最新位置是例外。您可以进入“功能表>常规>例外”,然后添加go目录和路径。