失败 - 预计 'package',发现 'EOF'
Go failing - expected 'package', found 'EOF'
我一直很难尝试在由 vagrant 提供支持的虚拟机中执行一个简单的 golang 程序。
这些是我的相关领域 go env
:
GOARCH="amd64"
GOPATH="/usr/local/src/go"
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
这是我要执行的程序(位于 /usr/local/src/go/program ):
package program
import (
"fmt"
)
func main() {
fmt.Print("Aloha")
}
这,我得到的输出:
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'
考虑到这是一个完全伪造的程序。奇怪的是它完全可以在不同的环境中工作。
我在这里错过了什么?
非常感谢!
问题不在于 GOROOT
也不在于 GOPATH
。 go 安装在某个时候失败了,导致整个过程不稳定(文件创建但完全是空的)。再次配置虚拟机时,go 模块检查文件是否存在。正如他们所做的那样,理所当然地认为安装已经发生。
清理并从头开始全新安装解决了问题。
这通常发生在您有文件时,例如foo_test.go 空或没有包声明。
对我来说,这也发生在使用 Atom + Go Plus + Terminal Plus 时。问题是前导括号不在 "correct" 行上。
注意:Go Plus 在保存时警告语法,但我在使用 VIM 在本地创建该文件后导入了该文件,因此我从未看到 lint错误...
错误:
package main
import "fmt"
func main()
{
fmt.Println("hello world")
}
正确:
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
作为一个新的 go 用户,我找到了这个答案,想找人告诉我我需要用 package main
启动我的脚本,尽管我的错误有点不同,
...expected 'package', found 'import'
现在很明显,但是,嘿,事情就是这样。
使用 VS Code for GO,遇到同样的问题。
在 Windows 上保存文件 'Ctrl+S' 解决了这个问题。
参考:
Answered by Nico
正如 Nico 已经建议的那样,当您创建一个新项目和新的 main.go 文件时,如果文件未保存,则会出现此错误。保存文件 (ctrl + s),此错误将在 mac 和 windows 中消失。
我遇到了同样的问题,只是通过在 main.go 文件上执行 ctrl+S 来解决它。
一个单独的Go文件在同一个包中,没有"package main"声明
因此,控制台在 运行 主 GO 文件.
上给出 错误
在向另一个 Go 文件
提供 包主声明时,错误停止显示。
先保存文件然后 运行 cammand.it 开始工作。
去运行main.go
使用 gopls(撰写本文时为 v0.4.0,非常不稳定!)和 vscode 为我工作 cmd+shift+P > Go: Restart language server
。
在我的例子中,我是通过使用 "VS Code" 而不是 默认 " 文本编辑器来解决问题的"
问题是文件中存在一些额外的字符。一旦我们删除多余的字符,它就会起作用。
我希望它也能解决你。
我今天遇到了完全相同的问题,而 运行宁 golang
在 vscode
。
错误
这通常发生在您不保存代码并且 运行 代码直接思考 IDE 就像 Intellij 为我们自动保存一样,但在 vscode 中您可以启用自动保存来避免这种情况一种错误并节省一些时间。
转到文件 -> 自动保存
我一直很难尝试在由 vagrant 提供支持的虚拟机中执行一个简单的 golang 程序。
这些是我的相关领域 go env
:
GOARCH="amd64"
GOPATH="/usr/local/src/go"
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
这是我要执行的程序(位于 /usr/local/src/go/program ):
package program
import (
"fmt"
)
func main() {
fmt.Print("Aloha")
}
这,我得到的输出:
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'
考虑到这是一个完全伪造的程序。奇怪的是它完全可以在不同的环境中工作。 我在这里错过了什么?
非常感谢!
问题不在于 GOROOT
也不在于 GOPATH
。 go 安装在某个时候失败了,导致整个过程不稳定(文件创建但完全是空的)。再次配置虚拟机时,go 模块检查文件是否存在。正如他们所做的那样,理所当然地认为安装已经发生。
清理并从头开始全新安装解决了问题。
这通常发生在您有文件时,例如foo_test.go 空或没有包声明。
对我来说,这也发生在使用 Atom + Go Plus + Terminal Plus 时。问题是前导括号不在 "correct" 行上。
注意:Go Plus 在保存时警告语法,但我在使用 VIM 在本地创建该文件后导入了该文件,因此我从未看到 lint错误...
错误:
package main
import "fmt"
func main()
{
fmt.Println("hello world")
}
正确:
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
作为一个新的 go 用户,我找到了这个答案,想找人告诉我我需要用 package main
启动我的脚本,尽管我的错误有点不同,
...expected 'package', found 'import'
现在很明显,但是,嘿,事情就是这样。
使用 VS Code for GO,遇到同样的问题。 在 Windows 上保存文件 'Ctrl+S' 解决了这个问题。
参考: Answered by Nico
正如 Nico 已经建议的那样,当您创建一个新项目和新的 main.go 文件时,如果文件未保存,则会出现此错误。保存文件 (ctrl + s),此错误将在 mac 和 windows 中消失。 我遇到了同样的问题,只是通过在 main.go 文件上执行 ctrl+S 来解决它。
一个单独的Go文件在同一个包中,没有"package main"声明 因此,控制台在 运行 主 GO 文件.
上给出 错误在向另一个 Go 文件
提供 包主声明时,错误停止显示。先保存文件然后 运行 cammand.it 开始工作。
去运行main.go
使用 gopls(撰写本文时为 v0.4.0,非常不稳定!)和 vscode 为我工作 cmd+shift+P > Go: Restart language server
。
在我的例子中,我是通过使用 "VS Code" 而不是 默认 " 文本编辑器来解决问题的"
问题是文件中存在一些额外的字符。一旦我们删除多余的字符,它就会起作用。
我希望它也能解决你。
我今天遇到了完全相同的问题,而 运行宁 golang
在 vscode
。
错误
这通常发生在您不保存代码并且 运行 代码直接思考 IDE 就像 Intellij 为我们自动保存一样,但在 vscode 中您可以启用自动保存来避免这种情况一种错误并节省一些时间。
转到文件 -> 自动保存