ちょっとした動作確認にThe Go Playgroundを多用する。
実は、The Go Playgroundにはショートカットキーが存在するので、マウス操作は必要ない。
TL+DR;
- The Go PlaygroundとTour of Goのエディターにはショートカットキーが設定されている。
CTRL
キー +ENTER
キー:Format
を実行するImports
にチェックがあれば、goimports
も実行するSHIFT
キー +ENTER
キー:Run
を実行する(コードを実行する)
- 実装の詳細は以下のリポジトリで確認できる。
The Go Playgroundのショートカットキーについて記載があるところ
ちょっとした動作確認や、サンプルコードを手元(?)で動かしたいとき、The Go Playgroundを開いてそのまま書いている。
いちいちマウスをにぎるのがめんどくさいので、ショートカットキーを使って実行したり、フォーマットをかけている。
The Go PlaygroundのショートカットキーはThe Go Playground自体には書いていない。
実はA Tour of Goの冒頭に書いてあるショートカットキーがThe Go Playgroundでも利用できる。
The tour is interactive. Click the Run button now (or press Shift + Enter) to compile and run the program on a remote server. The result is displayed below the code.
When you click on Format (shortcut: Ctrl + Enter), the text in the editor is formatted using the gofmt tool. You can switch syntax highlighting on and off by clicking on the syntax button.
Go Playgroundの実装を確認。
せっかくなので、実装も確認した。 The Go Playgroundは次のリポジトリのコードで実行されている。
このリポジトリを確認すると、x/tools/godoc/static
パッケージを使ってplayground.js
というJavaScriptファイルをロードしている。
- https://github.com/golang/playground/blob/a7e8e783bec503a4489d00a68d6603941455d8c0/server.go#L64-L68
import "golang.org/x/tools/godoc/static"
func (s *server) handlePlaygroundJS(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-type", "text/javascript; charset=utf-8")
rd := strings.NewReader(static.Files["playground.js"])
http.ServeContent(w, r, "playground.js", s.modtime, rd)
}
x/tools/godoc/static
パッケージは次のリポジトリにある。
この中のplayground.js
ファイルを確認すると、たしかにShift
キーやCtrl
キーのイベントを確認していた。
他にもショートカット設定があるかな?と思ったが、この2つだけのようだ。
if (e.keyCode == 13) { // enter
if (e.shiftKey) { // +shift
run();
e.preventDefault();
return false;
} if (e.ctrlKey) { // +control
fmt();
e.preventDefault();
} else {
autoindent(e.target);
}
}
その他のThe Go Playground情報
最近のThe Go Playgroundは複数ファイルに分かれたサンプルコードも実行できる。
なので、パッケージのimport
関係を確認したりすることもできる。
また、現在のThe Go Playgroundは標準パッケージ以外もimportできるので、privateなパッケージさえ含まなければ何でも実行できる。
The #golang playground now supports third-party imports, pulling them in via https://t.co/IrUZXimjCk ... https://t.co/5Ng5JXpggq 🎉
— Brad Fitzpatrick (@bradfitz) May 13, 2019
Multi-file support & few other things up next.
Report bugs at https://t.co/kZELNa2yzY or here on the tweeters.
終わりに
ショートカットキーについてはThe Go Playground内では言及されていないので、書いた。
図らずもstatic
パッケージの配信方法も見れたので学びがあった。