Go安装成功,但没有简单的Hello World输出

8zzbczxx  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(129)

使用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都没有改变。仍然没有输出。

smtd7mpg

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文件夹。您还应该从防病毒扫描中排除GOPATHGOBIN,您可能也会在那里构建和运行代码。

相关问题