CUBE SUGAR CONTAINER

技術系のこと書きます。

Golang

Golang: math/big で大きい数や細かい数を扱う

Golang の数値型はビット数が決められているため、扱える数の大きさや精度に限界がある。 整数の大きさの限界 例えば 2 を 64 ビット左シフトした整数を作ってみる。 package main import "fmt" func main() { fmt.Println(2 << 64) } 上記を実行しようとす…

Golang: gore でスニペットの動作を確認する

Golang でも REPL を使いたいときは gore というサードパーティ製のパッケージがある。 今回使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.11.4 BuildVersion: 15E65 $ go version go version go1.6 darwin/amd64 インストー…

Golang: gometalinter でソースコードを静的解析しまくる

先日、このブログで Golang の linter を使ってみたエントリを書いた。 blog.amedama.jp すると @r_rudi さんから gometalinter という便利なものがあることを教えてもらえた。 @momijiame https://t.co/VkWeIVx6pX をどうぞ— shirou - しろう (@r_rudi) 201…

Golang: ソースコードを静的に解析する

2016/4/5 追記: こっちを使った方が便利そうです。 blog.amedama.jp 今回は Golang でイケてるソースコードを書くのに使うと良さそうなツールについて調べた。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.11.4 BuildVersio…

Golang でダイクストラ法を書いてみる

今回は Golang の勉強がてらダイクストラ法を実装してみる。 ダイクストラ法はグラフ理論の最短経路問題を解くためのアルゴリズムのひとつ。 DirectedGraph#Add() のところを編集するとグラフを書き換えることができる。 package main import ( "errors" "fm…

Golang でマージソートを書いてみる

以前、勉強がてら Golang でクイックソートを書いたので、ついでにマージソートも書いてみる。 blog.amedama.jp サンプルコードは次の通り。 例によってナイーブな実装なので実用性は低い。 package main import ( "fmt" "time" "math/rand" ) func merge(le…

Golang でクイックソートを書いてみる

Golang の勉強がてら、どれくらい楽に書けるかという確認を兼ねてクイックソートを書いてみた。 ナイーブな実装なので実用性はないけど。 package main import ( "fmt" "time" "math/rand" ) func sort(values []int) (ret []int) { // 要素数が 1 以下の配…

Golang で ROT13 (シーザー暗号) を書いてみる

A Tour of Go の中に ROT13 を実装するエクササイズがあったので、今回は試しにそれを書いてみる。 ROT13 はシーザー暗号の一種で、文章の中の各文字をそれぞれ 13 文字分ずらした内容に変換するというもの。 アルファベットが 26 文字なので、単純に二回 RO…

Golang の defer 文と panic/recover 機構について

Golang の defer 文と、それにまつわる panic/recover 機構について調べたので、その内容を書き残しておくことにする。 Golang では defer 文を使うことで、それを呼び出した関数が終了する際に実行すべき処理を記述することができる。 例えば関数の中でオー…

Mac OS X で Golang に入門してみる

以前から Golang (Go 言語) にはポスト C 言語として興味があった。 マシン語を出力できる低レイヤー性にもかかわらず、スクリプト言語に近い記述しやすさも併せ持つというのはなかなかに魅力的だ。 今回はその Golang に関する概念を調べつつ開発環境を整え…