Expected package found eof как исправить go

Мне было трудно выполнить простую программу golang на виртуальной машине, работающей на vagrant. Это соответствующие поля моего go env: GOARCH="amd64" GOPATH="/usr/local/src/go" GOROOT="/usr/local/go" GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" Это программа, которую я пытаюсь выполнить (находи....

Мне было трудно выполнить простую программу golang на виртуальной машине, работающей на vagrant.
Это соответствующие поля моего 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'

Учтите, что это полностью фейковая программа. Странно то, что он полностью работает в другой среде. Что мне здесь не хватает?

Большое спасибо!

10 ответов

Лучший ответ

Проблема не была ни в GOROOT, ни в GOPATH. В какой-то момент установка go завершилась неудачно, в результате все работало нестабильно (файлы были созданы, но полностью пусты). При повторной инициализации виртуальной машины модуль go проверил, существуют ли файлы. Когда они это сделали, само собой разумеется, что установка уже состоялась.

Очистка и новая установка с нуля решили проблему.


12

ThisIsErico
29 Июн 2015 в 09:20

Как новый пользователь go, я наткнулся на этот ответ, ища кого-нибудь, кто сказал бы мне, что мне нужно запускать свои скрипты с package main, хотя моя ошибка была немного другой,

expected 'package', found 'import'

Сейчас это действительно очевидно, но, эй, вот как это происходит.


-2

kpie
5 Июл 2017 в 04:35

В моем случае я решил проблему, используя «VS Code» вместо по умолчанию «текстовый редактор»

Проблема заключалась в том, что в файле присутствовали некоторые лишние символы. Как только мы удалим лишние символы, все заработает.

Я хочу, чтобы это решило и вам.


0

Muthulakshmi M
29 Окт 2020 в 01:56

Как уже было сказано Нико, когда вы создаете новый проект и новый файл main.go, эта ошибка появляется, когда файл не сохраняется. Сохраните файл (ctrl + s), и эта ошибка исчезнет как в Mac, так и в Windows. Я столкнулся с той же проблемой, и я просто решил ее, нажав ctrl + S в файле main.go.


0

sonu1986
26 Дек 2018 в 20:37

отдельный файл Go в том же пакете, не имел декларации «основной пакет» из-за этого консоль выдавала ошибки при запуске главного файла GO .

При предоставлении основного объявления пакета другому файлу Go ошибка перестала отображаться.


2

starzar
18 Авг 2019 в 14:42

Для меня это также произошло с использованием Atom + Go Plus + Terminal Plus. Проблема заключалась в том, что ведущая скобка находилась не на «правильной» строке.

ПРИМЕЧАНИЕ : Go Plus предупреждает о синтаксисе при сохранении, но я импортировал этот файл после его локального создания с помощью VIM, поэтому я никогда не сталкивался с ошибками lint …

Ошибка:

package main
import "fmt"
func main() 
{
    fmt.Println("hello world")
}

Верный:

package main
import "fmt"
func main() {
    fmt.Println("hello world")
}


3

tdensmore
28 Фев 2017 в 04:14

С gopls (v0.4.0 на момент написания, настолько нестабильно!) И vscode выполнение cmd+shift+P > Go: Restart language server у меня сработало.


6

Luke
20 Апр 2020 в 16:02

Просто сначала сохраните файл, а затем запустите cammand. Он работает.

Иди, беги main.go


16

Javed
23 Сен 2019 в 07:10

Обычно это происходит, когда у вас есть файл, например. foo_test.go пустой или без объявления пакета.


25

Alessandro Resta
7 Авг 2016 в 08:50

Используя VS Code для GO, столкнулся с той же проблемой. Сохранение файла Ctrl + S в Windows устранило проблему.

Справка :
Ответил автор: Нико


58

Code_Yoga
2 Мар 2018 в 11:10

I’ve been having a hard time trying to execute a simple golang program in a virtual machine powered by vagrant.
These are the relevant fields of my go env:

GOARCH="amd64"
GOPATH="/usr/local/src/go"
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"

This is the program I’m trying to execute ( located in /usr/local/src/go/program ):

package program

import (
    "fmt"
)

func main() {
    fmt.Print("Aloha")
}

This, the output that I get:

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'

Take into account that this is a completely fake program. The weird thing is that it totally works in a different environment.
What am I missing here?

Thanks a lot!

11 Answers

Using VS Code for GO, and faced the same issue.
Saving the file ‘Ctrl+S’ on Windows fixed the issue.

Reference :
Answered by Nico

This usually happens when you have a file e.g. foo_test.go empty or without package declaration.

Just save the file first and than run the cammand.it is working.

go run main.go

The problem wasn’t neither with GOROOT nor GOPATH. The go installation failed at some point, leaving the whole thing unstable ( files created but completely empty ). When provisioning the virtual machine again, the go module checked whether the files existed. As they did, it took by granted that the installation had already take place.

A clean up and fresh installation from scratch solved the problem.

With gopls (v0.4.0 at the time of writing, so pretty unstable!) and vscode doing cmd+shift+P > Go: Restart language server worked for me.

I have faced exactly same issue today while running golang in vscode.

enter image description here

Error

enter image description here

This usually happen when you don’t save code and run code directly thinking IDE like Intellij does autosave for us, but in vscode you can enable autosave to avoid this kind of error and save some time.

Go to File -> Auto save

For me, this also happened using Atom + Go Plus + Terminal Plus. The problem was that leading bracket was not on the «correct» line.

NOTE: Go Plus warns about syntax upon save, but I had imported this file after creating it locally with VIM, so I was never presented with the lint errors…

Error:

package main
import "fmt"
func main() 
{
    fmt.Println("hello world")
}

Correct:

package main
import "fmt"
func main() {
    fmt.Println("hello world")
}

A separate Go file in the same package,didn’t have the «package main» declaration
and because of this the console was giving errors on running the Main GO file.

On providing the package main declaration to the other Go file ,the error stopped showing.

In my case i was solve the problem by Using «VS Code» instead of default «text editor»

The problem was some extra characters present in the file. Once we remove extra characters it will work.

I wish it will solve to you also.

As said by already suggested by Nico, When you create a new project and new main.go file this error will appear when the file is not saved. Save the file (ctrl + s) and this error will disappear in both mac & windows.
I faced the same issue and just got it resolved by doing ctrl+S on the main.go file.

As a new go user I came upon this answer looking for someone to tell me that I need to start my scripts with package main although my error was a little different,

expected 'package', found 'import'

It’s real obvious now, but hey, that’s how it goes.

мне было трудно выполнить простую программу golang на виртуальной машине, работающей от vagrant.
Это соответствующие поля my 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'

примите во внимание, что это полностью поддельная программа. Странно то, что он полностью работает в другой среде.
Что такое Я скучаю здесь?

Спасибо большое!

5 ответов


Это обычно происходит, когда у вас есть файл, например, foo_test.go пустой или без объявления пакета.

9

автор: Alessandro Resta


использование VS-кода для GO и столкнулся с той же проблемой.
Сохранение файла «Ctrl+S» в Windows Исправлена проблема.

ссылка :
ответил Нико


проблема не была ни с GOROOT, ни GOPATH. В какой-то момент установка go не удалась, оставив все это нестабильным ( файлы созданы, но полностью пусты ). При повторной подготовке виртуальной машины модуль go проверил наличие файлов. Как они и сделали, было само собой разумеющимся, что установка уже состоялась.

очистка и свежая установка с нуля решили проблему.


для меня это также произошло с помощью Atom + Go Plus + Terminal Plus. Проблема заключалась в том, что ведущий кронштейн не был на «правильной» линии.

Примечание: 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'

теперь это действительно очевидно, но эй, вот как это происходит.


Понравилась статья? Поделить с друзьями:
  • Expected function or variable vba ошибка
  • Expected error junit
  • Expected error assetto corsa
  • Expected end sub ошибка vba
  • Expected calibration error