今川館

都内勤務の地味OLです

Go

Goはnilをレシーバーにメソッドを呼んでもnil pointerで落ちない

Go

Goはヌルポしないという事実に驚愕してしまった もう言いたいことはタイトルがすべてなのだが、Goはnilからメソッドを呼んでもnil ponterでパニックになったりしない。以下のGoのプログラムでmain()関数のローカル変数fはnilだが、f.IsNull()などのメソッド…

mapの競合状態のはなし

Go

目次 mapの競合状態とは何か? どうしたらいいのか? sync.RWMutexを使う 共有ロックと排他ロック sync.Mapを使う atomic.Valueを使う ロックとCompare and swap さいごに 感想 mapの競合状態とは何か? GoのmapはあるgoroutineでReadしているときに別のgoro…

NULLを許可する列をScanするときの注意点

Go

NULLを許可する列をScanするときは要注意 database/sqlでMySQLのデータを取得するとき、NULLを許可する列の扱いがちょっと要注意だった。まず、こういうNULLを許すテーブルにデータを入れる。 CREATE TABLE `students` ( id INT PRIMARY KEY, active TINYINT…

テストで誤差を許容するアサーション assert.InEpsilon と assert.InDelta

Go

Goのassertを使って「だいたい結果は100」みたいなテストしたいときはassert.InEpsilon。