手軽にgo1.6を試す方法考える -> 結局dockerを使うことにした

はじめに

期待していない挙動を示した時にそもそもgo1.7とgo1.6とで動作が異なるのではないか?という疑いをもった時があった。 ところで手元の環境は全部1.7でわざわざ1.6をbuildするのも面倒と言うような感じ。 本当に些細なコードだったので、goの1.6用のplaygroundがあればそちらを使いたかったのだけれど。みつけられなかった。

特にvmや他の環境を持っていない場合にどうするのが一番楽なんだろう?という話。

dockerを使うことにした

dockerを使うことが一番ラクかもしれない。以下にdocker用のイメージがある。alpineがたぶんいちばん小さいだろうということでそれを使うことにする。

以下のようなdocker-compose.ymlを書いてあげる。

go1.6:
  image: golang:1.6-alpine
  volumes:
    - "$PWD:/go"

例えば以下の様なコードを実行してみる。

dump-info.go

package main

import (
    "fmt"
    "os"
    "runtime"
)

func main() {
    fmt.Printf("go version: %q\n", runtime.Version())
    pwd, _ := os.Getwd()
    fmt.Printf("cwd: %q\n", pwd)
}

以下の様にして実行できる。

$ docker-compose run go1.6 go run dump-info.go
go version: "go1.6.3"
cwd: "/go"

1.6で動いている。

参考