gotipでリリース前のGoを使って最先端Gopherになる
本記事はGo Advent Calendar 2021 15日目の記事になります
去年はこんな記事を書きました
来年の2月頃、Goの新バージョン1.18がリリースされる予定です
今回のリリースはGenericsやFuzzing test, Workspace modeなど新機能が複数追加される大幅なアップデートになっています
これらの機能はまだリリースされておりませんが、リリース前の機能を簡単に試すことができる仕組みがGoにはあります
ローカルで動かす
以下の手順でgotip
をインストールすることで簡単にローカルで新しいGoを試せます
go install golang.org/dl/gotip@latest
gotip download
gotip
を既にインストールしている場合はgotip download
を実行することで最新の状態に更新することができます
普段go
コマンドを使うところをgotip
に置き換えれば、最新の開発ブランチの環境でコマンドを実行することができます
gotip mod init example.com/m
などでgo.modファイルを作成すると1.18
バージョンが指定されています(2021/12時点)
余談ですが同じ要領で他バージョンのGoもインストールすることもできます
Go公式Twitterアカウントのリリース告知tweetにいつも載ってる画像のやつです
goplsを最新にする
go1.18で追加された構文をエディタで書いてみると、静的解析で怒られました
これはエディタが利用しているgopls(Go公式のLanguage Server)がgo1.18に対応していないためです
goplsを使った補完や静的解析を有効にしたい場合は、goplsのmasterバージョンの用意が必要です
手順については公式のドキュメントに記述があります
ドキュメント通りにコマンドを実行することでmasterバージョンのgoplsが使えるようになります
# 必要なモジュールを記録するために空の go.mod ファイルを作成します
cd $(mktemp -d)
go mod init gopls-unstable
# 'go get' を使って必要なモジュールを追加し、それらが確実に連動するようにします
go get golang.org/x/tools/gopls@master golang.org/x/tools@master
# go1.17以前は前述の'go get'コマンドがgoplsのビルドに加えてインストールも実行されます
# go1.18以上またはtipを使っている場合は、次のコマンドを実行することでgo.modのバージョンでインストールします
go install golang.org/x/tools/gopls
コマンド実行後gopls version
コマンドでバージョンを確認してください
vx.x.x
の後ろに最新のコミット日時・コミットハッシュの情報がついていればokです
gopls version
golang.org/x/tools/gopls master
golang.org/x/tools/gopls@v0.0.0-20211209154716-27fc7644e1ac h1:UirinTEN/T9qsAKoE9oFyPi00b8QKSMKbfkUACNkSwE=
他のGo toolsも上記と同じ手順で、リポジトリのパスを変えてやればmasterバージョンを取得できるはずです
goimports
などを利用している場合はそちらもmasterバージョンにする必要があります
Gotip Playground
ローカルの環境構築が面倒だという場合はgotipが動くGo Playground、Gotip Playgroundを使うのが良いです
Go Playgroundと同様にコードのシェアも簡単にできます
Go Playgroundにgotipで動かすモードが追加されました(tenntennさんに教えていただきました)
シンタックスハイライトやコード補完など高度な機能はないですが、気軽に構文を試したい場合はオススメです
年末はgotipでGenericsを先取りしちゃいましょう
Discussion