zenn.dev に
という記事があったので、試してみた。同記事にある手順:
go install golang.org/dl/gotip@latest gotip download 510541
は特に問題なく完了した。ダウンロードはさほどの時間はかからなかったが、その後のライブラリのビルドはそこそこの時間と CPU の負荷をとられた。
Windowsの場合、gotipは %USERPROFILE%\go\bin
に、コンパイラのその他のファイルセットは %USERPROFILE%\sdk\gotip
にインストールされている。
実験1
単純なカウントループ
package main func main(){ for i := range 5 { println(i) } }
$ GOEXPERIMENT=range gotip run count.go 0 1 2 3 4
よしよし
※ bash や nyagosでは上記のとおり 一時的に設定する変数名=値 コマンド 引数
という構文が使えるが、CMD.EXE などでは set "GOEXPERIMENT=range" && gotip run count.go` といった形に直す必要がある。
実験2
Python の enumrate みたいに、シーケンスに通し番号をつける iterator
package main func enumerate(list ...string) func(func(key int, value string) bool) { return func(callback func(key int, value string) bool) { for i, v := range list { if !callback(i, v) { break } } } } func main() { for i, v := range enumerate("a", "b", "c", "d") { println(i, v) } }
$ GOEXPERIMENT=range gotip run f.go 0 a 1 b 2 c 3 d
予想外にアッサリ動いたので、少々驚いた。 Lua の iterator より、ちょっとだけ難度高いね
一年くらいは待たされそうな雰囲気だけど、リリースを楽しみに待つとしよう