Я новичок в коде VS и Golang.
У меня есть существующий проект, содержащий 2 разных сервиса — давайте назовем один A, а второй B.
Оба A и B находятся в одном каталоге.
Всякий раз, когда я пытаюсь запустить A или B, я получаю следующую ошибку:
# directory/directory/directory/A&B_Directory
./A.go:12:6: main redeclared in this block
previous declaration at ./B.go:18:6
Я попытался поиграть с файлом launch.json
, добавив следующие разделы:
{
"name": "Launch Program",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "FullDirectory/A.go"
}
Также пытался в атрибуте программы установить значение ${file}
и многие другие варианты, которые не увенчались успехом.
Я хотел бы получить какое-то направление, я немного потерялся. Спасибо.
main
в одной программе. Все файлы в каталоге являются частью одного пакета. Если вы хотите, чтобы A и B были отдельными сервисами, они должны находиться в разных каталогах. - person Flimzy   schedule 30.08.2017go run file1 [file2 [...]]
для компиляции и запуска раундов вне vscode. Проблема в том, что это ухудшенный случай, который обычно не используется для реальных проектов Go. При работе над проектом обычным способом вы обычно выполняетеgo install [package_spec]
, который либо использует весь текущий каталог, либо просматривает их дерево, указанноеpackage_spec
, собирает и устанавливает там все, что не является актуальным. . Это не будет работать с двумя файлами в одном и том же каталоге, содержащимиmain()
в пакете main. - person kostix   schedule 30.08.2017go install
и терпит неудачу. - person kostix   schedule 30.08.2017go build
, а затем запускает исполняемый файл, что должна делать IDE. Gogland, вероятно, используетgo run
, что является ужасной практикой, и ее следует избегать - одна из причин заключается в том, что она маскирует именно такие проблемы, когда у вас есть недопустимый пакет с несколькими объявлениямиmain
в одном пакете. - person Adrian   schedule 30.08.2017go
может делать с кодом Go. - person kostix   schedule 31.08.2017