使用Windows 11 Pro,使用installer安装Go。下面是我的main.go文件:包主
import (
"fmt"
"time"
)
func main() {
fmt.Println("Hello world")
time.Sleep(2 * time.Second)
}
字符串
以及我能想到的所有相关信息:Powershell版本:PS C:\Users\fares.alghazy\go\src> $PSVersionTable.PSVersion
主要和次要构建版本
5 1 22621 1778
GO扩展设置.json:
{
"explorer.confirmDelete": false,
"terminal.integrated.scrollback": 100000,
"editor.minimap.enabled": false,
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"workbench.editorAssociations": {
"*.db": "default",
"*.docx": "default"
},
"[json]": {
"editor.defaultFormatter": "vscode.json-language-features"
},
"[php]": {
"editor.defaultFormatter": "Sophisticode.php-formatter"
},
"editor.formatOnSave": true,
"prettier.tabWidth": 4,
"[typescript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
},
"[dockercompose]": {
"editor.defaultFormatter": "ms-azuretools.vscode-docker"
},
"typescript.updateImportsOnFileMove.enabled": "always",
"javascript.updateImportsOnFileMove.enabled": "always",
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
},
"diffEditor.ignoreTrimWhitespace": false,
"workbench.startupEditor": "none",
"[vue]": {
"editor.defaultFormatter": "Vue.volar"
},
"audioCues.lineHasBreakpoint": "off",
"audioCues.lineHasError": "off",
"audioCues.lineHasInlineSuggestion": "off",
"audioCues.noInlayHints": "off",
"audioCues.onDebugBreak": "off",
"audioCues.volume": 0,
"audioCues.lineHasFoldedArea": "off",
"go.gopath": "C:\\Users\\myuser\\go",
"go.goroot": "C:\\Program Files\\Go",
"files.autoSave": "afterDelay",
"go.alternateTools": {
}
}
型
系统/目录信息:
PS C:\Users\myuser\go\src> pwd
C:\Users\myuser\go\src
PS C:\Users\myuser\go\src> ls
Directory: C:\Users\myuser\go\src
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 28-Jul-23 12:00 PM 122 main.go
PS C:\Users\myuser\go\src> go version
go version go1.20.6 windows/amd64
PS C:\Users\myuser\go\src> go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\myuser\AppData\Local\go-build
set GOENV=C:\Users\myuser\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\myuser\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\myuser\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.20.6
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=0
set GOMOD=NUL
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=C:\Users\myuser~1.ALG\AppData\Local\Temp\go-build1704880455=/tmp/go-build -gno-record-gcc-switches
型
问题:
动作运行:go run main.go
预期输出:> Hello world
**接收输出:**终端暂停(即使没有时间.sleep),然后什么都没有发生
尝试修复:1-尝试使用go build,然后运行exe,未收到输出2-尝试生成,然后将输出重定向到文件:go build main.go
.\main.exe >output.txt
output.txt已创建,但为空3-已检查控制台编码:Active code page: 65001
4-禁用防病毒或安全软件:我使用的是标准的windows安全功能,没有安装第三方安全软件,我甚至尝试重新安装Go软件,重启电脑,重启VS代码等
为什么我的代码不显示输出?我能做些什么来修复它?
**更新1:**根据@mkopriva的指示:
go mod init my_app生成以下go.mod文件:
module my_app
go 1.20
型
我的新目录是:
PS C:\Users\myuser\Desktop\Development\go\my_app> ls
Directory: C:\Users\myuser\Desktop\Development\go\my_app
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 28-Jul-23 1:14 PM 27 go.mod
-a---- 28-Jul-23 1:15 PM 125 main.go
型
go run main.go或building then running都没有改变。仍然没有输出。
1条答案
按热度按时间smtd7mpg1#
围棋程序经常被反病毒软件误认为是恶意的,即使它们不是。在官方Go文档中甚至有一个关于这个主题的FAQ条目。
Windows Defender通常会在编译后立即删除您的可执行文件。不使用
go run main.go
,您可以分别执行这两个步骤,首先调用go build main.go
,然后尝试运行main.exe
。当Windows在创建后立即删除可执行文件时,此操作将失败。我见过编译的DLL在一分钟后消失,当我认为我是安全的,所以要注意可执行文件可能不会被删除马上,但可能在编译后几秒钟甚至几分钟。当您调用
go run main.go
时,它将在%APPDATA%
的Local
路径下的临时文件夹中构建可执行文件,该文件夹名为go-build
。您可能希望在Windows Defender中创建一个例外规则,以忽略
APPDATA
中的go-build
文件夹。您还应该从防病毒扫描中排除GOPATH
和GOBIN
,您可能也会在那里构建和运行代码。