競技プログラミングでGo言語を使い始めた時につまづいたこと
この記事は、マイナビ Advent Calendar 2019 9日目の記事となります。
概要
AtCoderでGo言語を使い始めた時に、つまづいたことについてまとめました。
バージョン1.6がmacOSで使用できない
2019年12月8日時点のジャッジシステムにおいて、Go言語の処理系はバージョン1.6です。
https://atcoder.jp/contests/abc147/rules
新しいバージョンだと、使用できる標準モジュールが異なるため、AtCoder用に1.6の環境も用意しようとしました。
※macOS Mojave(バージョン10.14)で検証
動作確認用のコード(Hello World)
package main import ( "fmt" ) func main() { fmt.Println("Hello World") }
バージョン1.11では正常に動作します。
$ goenv global 1.11.4 $ go version go version go1.11.4 darwin/amd64 $ go run hello.go Hello World
しかし以下のように、バージョン1.6では「Segmentation fault」になります。
$ goenv install 1.6.4 $ goenv global 1.6.4 $ go run hello.go Segmentation fault: 11
公式のリポジトリで同じ問題に遭遇しているissueがありました。
cmd/go: segmentation fault on macOS 10.13.4 #24679
そしてこんなコメントが。
macOS Sierra(バージョン10.12)以降では、goの1.10.1以前のバージョンが動かないとのこと。
Please make sure you upgrade to go 1.10.1. Earlier versions of Go are incompatible with changes to the kernel interface in Sierra and later.
1.6で動作確認したい場合は、コンテストページのコードテストから実施するしかない模様
https://atcoder.jp/contests/abc147/custom_test
補足
ジャッジサーバの処理系がアップデートされたら、上記問題は解決しそうです。