Я только что попытался выполнить Hello World из VSCode 1.28.2 (Windows 8.1) в файле C: \ Scripts \ hello_world.go:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, Gopher!")
}
Моя среда выглядит следующим образом:
- Я установил Go с нуля с помощью установщика Windows:
$ go version
go version go1.11.2 windows/amd64
иди -u github.com/derekparker/delve/cmd/dlv
- Проверено с помощью SystemPropertiesAdvanced:
- Локальная переменная GOPATH =% USERPROFILE% \ go
- Локальная переменная PATH добавляет% USERPROFILE% \ go \ bin
- Системная переменная PATH добавляет C: \ Go \ bin
- Системная переменная GOROOT = C: \ Go \
- У меня есть MinGW64, GitBash и MinGW 1.0 (однако я не понимаю, как это может повлиять на запуск Go из VSCode)
- Запуск из cmd.exe запускает программу вообще без проблем:
C:\Scripts>go run hello_world.go
Hello, Gopher!
В настройках VSCode мои глобальные настройки go.gopath и go.goroot:
// Specify GOPATH here to override the one that is set as environment variable. The inferred GOPATH from workspace root overrides this, if go.inferGopath is set to true.
"go.gopath": null
// Specifies the GOROOT to use when no environment variable is set.
"go.goroot": null
Итак, я настроил переменные из VSCode следующим образом:
{
"editor.renderControlCharacters": false,
"go.inferGopath": true,
"go.goroot": "C:\\go",
}
Теперь это странная часть. Когда я нажимаю Ctrl + F5, компиляция берет файл «Example_c.c» (?) И сообщает об ошибках с этим файлом (который я никогда не создавал и даже не знал о существовании):
# _/c_/Scripts
C:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_x003.o: In function `main':
./Example_c.c:1: multiple definition of `main'
C:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_cgo_main.o:/tmp/go-build/_cgo_main.c:1: first defined here
C:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_x004.o: In function `main':
./Test_C-01.c:3: multiple definition of `main'
C:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_cgo_main.o:/tmp/go-build/_cgo_main.c:1: first defined here
C:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_x005.o: In function `main':
./Test_C-02.c:3: multiple definition of `main'
C:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_cgo_main.o:/tmp/go-build/_cgo_main.c:1: first defined here
collect2: ld returned 1 exit status
# _/c_/Scripts
Example_c.c: In function 'main':
Example_c.c:2:3: warning: incompatible implicit declaration of built-in function 'printf'
Example_c.c:4:19: warning: incompatible implicit declaration of built-in function 'malloc'
Example_c.c:9:3: warning: incompatible implicit declaration of built-in function 'free'
exit status 2
Process exiting with code: 1
Я уже пытался удалить все свои временные файлы и перезагружал VsCode несколько раз. Весь опыт настройки среды Go для отладки Hello World действительно разочаровывает.
Что еще я могу проверить? Есть намеки?