VSCodeにGoをインストールして実行するまで(mac編)

VSCodeにGoをインストールして、ファイルを作成して実行する手順をまとめます。

# 実行環境

* macOS High Sierra 10.13.1
* go version go1.9.4 darwin/amd64
* VSCode バージョン1.20.1 (1.20.1)

#　前提
Goそのものインストールはすでに終わっている前提です。この記事ではVSCodeでGoを使えるようにするまでの手順を記載します。

# 大まかな手順

* VSCodeインストール
* 拡張機能インストール
* User　Setting
* ファイル作成&コード作成
* F5で実行
    * could not launch process: exec: "lldb-server": executable file not found in $PATH
    * could not launch process: stub exited while attempting to connect: 



# VSCodeインストール

https://code.visualstudio.com/
にアクセスして右上の「Download」からダウンロードする。
ダウンロードしたアプリを開く

# 拡張機能インストール

Goの拡張機能をインストールします。
`cmd+shift+x`のショートカットを使うか、左ペインの拡張機能から「go」を検索してインストールします。

<img width="400" alt="スクリーンショット 2018-03-03 17.29.45.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/31587/d94ba870-b997-d33a-4b2d-62c5db30238e.jpeg">


# User　Setting
VSCode上のGoの設定をするためにUser Settingを変更します。
`cmd+shift+p`でコマンドパレットを表示して「User Setting」で検索するか`cmd+,`のショートカットでUser Settingの編集画面を開きます。

下記公式のREADMEに従って設定します。


[Microsoft/vscode-go: An extension for VS Code which provides support for the Go language.](https://github.com/Microsoft/vscode-go)

私はこのような設定をしました。

```json
{
    "files.autoSave": "afterDelay",
    "go.gocodeAutoBuild": true,
    "go.gopath": "/Users/<USERPATH>/go"  
}

```

* files.autoSaveを`afterDelay`自動保存を有効にする。ファイル保存した後、GOの各ツールは保存されてから実行されるので自動保存を有効にすると素早くエラーなどを吐いてくれて便利
* 依存関係から新しい結果を得るために、`go.gocodeAutoBuild`をtrueに
* コマンドライン`go env`で出力された`GOPATH="/Users/<USRPATH>/go"`の値を`go.gopath`に指定

# ファイル作成&コード作成

適当にディレクトリを作って、goファイルを作成します。

```
start.go
```

コマンドラインに文字列を出力するコードを書きます。

```go
package main
 
import (
  "fmt"
)
 
func main()  {
    fmt.Println("Go!!!")
}

```

実行のショートカットは`F5`です。`F5`を押して実行します。

# F5で実行
が、エラーが出てしまいました。
私が遭遇にしたエラーはこの２つです。
    * could not launch process: exec: "lldb-server": executable file not found in $PATH
    * could not launch process: stub exited while attempting to connect: 

ただ、ターミナルで直接ビルドすると実行結果が出力できた状態でした

```bash
$ go run start.go
Go!!!
```

いちいちターミナルで実行するのも面倒なのでVSCodeでビルド実行できるように修正します。



## could not launch process: exec: "lldb-server": executable file not found in $PATH

delveというLLDB次世代のハイパフォーマンスデバッガが見つからないために起こっていました。


[Need documentation for lldb-server · Issue #838 · derekparker/delve](https://github.com/derekparker/delve/issues/838)

`lldb-server`のコマンド自体はあったのでこちらの記事の通りにリンクを貼ってパスを通しました。

```bash
$ ln -s /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/Resources/lldb-server /usr/local/bin/lldb-server

```

## could not launch process: stub exited while attempting to connect: 
コマンドラインをインストールできてないとこのエラーになるらしい

[Stub exited while attempting to connect: Segmentation Fault Error · Issue #869 · derekparker/delve](https://github.com/derekparker/delve/issues/869)

インストールします。

```bash
$ xcode-select --install
```

# 結果

無事にgoのコードがF5で実行できたら成功です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/31587/1fe00334-4276-9cbd-2d22-4cd188ec833e.png)



# 参考
* [Sublime TextからVisual Studio Codeに乗り換えた話 - Qiita](https://qiita.com/mono0926/items/fc0b7f69593567f0a456)
* [Microsoft/vscode-go: An extension for VS Code which provides support for the Go language.](https://github.com/Microsoft/vscode-go)
* [Visual Studio CodeによるGo言語のデバッグ ｜ Developers.IO](https://dev.classmethod.jp/go/visual-studio-code-golang-debug/)
* [GolangでHello World! - Qiita](https://qiita.com/fk_2000/items/d691c9e1ffff170359db)
* [Visual studio codeでGO言語を開発する環境を整える - Qiita](https://qiita.com/sasaron397/items/ec285b64607c1e7662e0)
* [Need documentation for lldb-server · Issue #838 · derekparker/delve](https://github.com/derekparker/delve/issues/838)