Go でプロコンに出てみた (前編)

近年、Go言語を採用したプロダクト・企業も増えてきたという話を聞くので、ABC で使ってみた。 *1

入門書は読まず、詰まってからググる方針で。

なお、最終的にはこれを投げました。

Submission #415726 - AtCoder Beginner Contest 024 | AtCoder

目次

  1. 前編
    1. 処理系をインストールしよう
    2. コンパイルしよう
  2. 後編
    1. 入力を読もう
    2. 配列を使おう
    3. 繰り返しを書こう

処理系をインストールしよう

Mac を使ってみたので HomeBrew でインストール。

$ brew search go
algol68g           goocanvas              mongo-c
arangodb           google-app-engine          mongodb
bogofilter         google-perftools       mongodb24
forego             google-sparsehash          mongodb26
ggobi              google-sql-tool        mongoose
go             googlecl           pango
go-app-engine-32       goolabs            pangomm
go-app-engine-64       gosu               pangox-compat
go12               gource             php53-mongo
go13               gringo             php54-mongo
goaccess           gst-plugins-good       php55-mongo
gobby              gst-plugins-good010        php56-mongo
gobject-introspection      hugo               pygobject
gocr               jpegoptim              pygobject3
goffice            libmongoclient         ringojs
golo               libmongoclient-legacy
homebrew/games/cgoban           Caskroom/cask/google-drive
(以下略)

なんかいっぱい出てきたけどとりあえず go というパッケージ名で良さそう。

$ brew install go
Warning: go-1.4.2 already installed

身に覚えがないけど昔インストールしていたらしい。

コンパイルしよう

そもそも Go 言語ってインタープリタ言語なのかコンパイラ言語なのかよく知らないのだが、ダミーを作ってとりあえず処理系に食わせてみよう。

$ go arc024c.go
go: unknown subcommand "arc024c.go"
Run 'go help' for usage.

え。。どうやってコンパイルするんだ?とりあえず言われた通りに help を見よう。

$ go -help
Go is a tool for managing Go source code.

Usage:

    go command [arguments]

The commands are:

    build       compile packages and dependencies
    clean       remove object files
    env         print Go environment information
    fix         run go tool fix on packages
    fmt         run gofmt on package sources
    generate    generate Go files by processing source
    get         download and install packages and dependencies
    install     compile and install packages and dependencies
    list        list packages
    run         compile and run Go program
    test        test packages
(以下略)

なんかたくさん出てきたー。 雰囲気からすると maven とか sbt とか cabal とか的な、ビルドツールとパッケージマネージャが付いているっぽい。 とはいえ、コマンド多すぎてどれ呼べばいいかよくわからん。

結局、あれこれしてみた結果 go run を呼べばいいとわかった。

続く

後編に続く

*1:そういえば、3色コーディング(※TopCoderのArenaの順位表では使用言語によって色が変わるので複数の言語を使うことがこう呼ばれることもある)したのだけど AtCoder では全く目立たないですね…。