Golang
Docker イメージというと、一般的には既存の Docker イメージをベースにして作る機会が多い。 そうしたとき Dockerfile にはベースとなるイメージを FROM 命令で指定する。 とはいえ、既存のイメージをベースにしない、まっさらな状態からイメージを作ること…
Golang の数値型はビット数が決められているため、扱える数の大きさや精度に限界がある。 整数の大きさの限界 例えば 2 を 64 ビット左シフトした整数を作ってみる。 package main import "fmt" func main() { fmt.Println(2 << 64) } 上記を実行しようとす…
Golang でも REPL を使いたいときは gore というサードパーティ製のパッケージがある。 今回使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.11.4 BuildVersion: 15E65 $ go version go version go1.6 darwin/amd64 インストー…
先日、このブログで Golang の linter を使ってみたエントリを書いた。 blog.amedama.jp すると @r_rudi さんから gometalinter という便利なものがあることを教えてもらえた。 @momijiame https://t.co/VkWeIVx6pX をどうぞ— shirou - しろう (@r_rudi) 201…
2016/4/5 追記: こっちを使った方が便利そうです。 blog.amedama.jp 今回は Golang でイケてるソースコードを書くのに使うと良さそうなツールについて調べた。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.11.4 BuildVersio…
今回は Golang の勉強がてらダイクストラ法を実装してみる。 ダイクストラ法はグラフ理論の最短経路問題を解くためのアルゴリズムのひとつ。 DirectedGraph#Add() のところを編集するとグラフを書き換えることができる。 package main import ( "errors" "fm…
以前、勉強がてら Golang でクイックソートを書いたので、ついでにマージソートも書いてみる。 blog.amedama.jp サンプルコードは次の通り。 例によってナイーブな実装なので実用性は低い。 package main import ( "fmt" "time" "math/rand" ) func merge(le…
Golang の勉強がてら、どれくらい楽に書けるかという確認を兼ねてクイックソートを書いてみた。 ナイーブな実装なので実用性はないけど。 package main import ( "fmt" "time" "math/rand" ) func sort(values []int) (ret []int) { // 要素数が 1 以下の配…
A Tour of Go の中に ROT13 を実装するエクササイズがあったので、今回は試しにそれを書いてみる。 ROT13 はシーザー暗号の一種で、文章の中の各文字をそれぞれ 13 文字分ずらした内容に変換するというもの。 アルファベットが 26 文字なので、単純に二回 RO…
Golang の defer 文と、それにまつわる panic/recover 機構について調べたので、その内容を書き残しておくことにする。 Golang では defer 文を使うことで、それを呼び出した関数が終了する際に実行すべき処理を記述することができる。 例えば関数の中でオー…
以前から Golang (Go 言語) にはポスト C 言語として興味があった。 マシン語を出力できる低レイヤー性にもかかわらず、スクリプト言語に近い記述しやすさも併せ持つというのはなかなかに魅力的だ。 今回はその Golang に関する概念を調べつつ開発環境を整え…