失败 - 预期'包',发现'EOF'

Thi*_*ico 17 package go eof

我一直很难尝试在由vagrant驱动的虚拟机中执行一个简单的golang程序.这些是我的相关领域go env:

GOARCH="amd64"
GOPATH="/usr/local/src/go"
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试执行的程序(位于/ usr/local/src/go/program中):

package program

import (
    "fmt"
)

func main() {
    fmt.Print("Aloha")
}
Run Code Online (Sandbox Code Playgroud)

这个,我得到的输出:

main.go:4:5:
/usr/local/go/src/fmt/doc.go:1:1: expected 'package', found 'EOF'
package runtime:
/usr/local/go/src/runtime/alg.go:1:1: expected 'package', found 'EOF'
Run Code Online (Sandbox Code Playgroud)

考虑到这是一个完全假的程序.奇怪的是它完全适用于不同的环境.我在这里错过了什么?

非常感谢!

Cod*_*oga 32

使用VS Code for GO,并面临同样的问题.在Windows上保存文件"Ctrl + S"修复了此问题.

参考: Nico回答

  • 这在 macOS 上为我解决了这个问题。现在我在 VS Code 中选择了“自动保存”以避免浪费时间...... (3认同)
  • 这也适用于Mac。 (2认同)
  • 也适用于 Mac 操作系统 (2认同)

小智 17

只需先保存文件,然后运行cammand。它正在工作。

去运行 main.go

  • 每个开发者都会面临这个问题。跑步前按 cltr+s 五次 (3认同)

Ale*_*sta 14

当您有一个文件,例如foo_test.go为空或没有包声明时,通常会发生这种情况.


Thi*_*ico 11

这个问题既不是GOROOT也不是GOPATH.go安装在某些时候失败,使整个事情不稳定(文件已创建但完全为空).再次配置虚拟机时,go模块检查文件是否存在.正如他们所做的那样,已经认定安装已经完成.

从头开始清理和全新安装解决了这个问题.


kri*_*ris 10

golang我今天在跑步时遇到了完全相同的问题vscode

在此输入图像描述

错误

在此输入图像描述

当您不保存代码并直接运行代码时,通常会发生这种情况,认为像 Intellij 这样的 IDE 会为我们自动保存,但在 vscode 中,您可以启用自动保存以避免此类错误并节省一些时间。

转到文件->自动保存


Luk*_*uke 7

使用 gopls(撰写本文时为 v0.4.0,非常不稳定!)和 vscodecmd+shift+P > Go: Restart language server对我有用。


sta*_*zar 6

同一包中的单独Go 文件没有“package main”声明 ,因此控制台在运行 Main GO 文件时出错

在向其他 Go 文件提供包主声明时,错误停止显示。