ken2merのブログ

Webエンジニア, Ruby on Rails, Go

Goの標準パッケージを試す (sync.RWMutex, net.Listen, net.Accept, net.Dial)

sync.RWMutex

https://github.com/Ken2mer/go-example/commit/b22404c36603c2d927567aa597a941ac78251a97

みんなのGo言語 1.4章で map排他制御の例が載っていたので、それを参考に Example テストを実装した。あとで sync.RWMutex がない場合や、うまく動かなかった場合にFailとなるようなテストコードを追加してみたい。

net.Listen, net.Accept

https://github.com/Ken2mer/go-example/commit/50791c9ca06a5f21a5ddbe212e27538399816762

この記事 を参考に net.Listennet.Accept でHTTP Serverを実装した。テストの途中でサーバーを停止させたかったため channel や signal.Notify といった処理を追記している。テストでは SIGINT を無理やり?発行させているが、もっと良いやり方がないか模索したい。

Windowsでは syscall.Kill が使えず テストで落ちる ことが分かったので、これも何とかしたい。

net.Dial

https://github.com/Ken2mer/go-example/commit/a7de1051ea8c341b5a8a706cc143b19cdd8da01d

こちらも この記事 を参考に net.Dial を使ってHTTPクライアントを実装してみた。

strings.Split(url, "://")[1] としていたところは url.Parse を使うように直した。 https://github.com/Ken2mer/go-example/commit/cb746e697bfb798dd8577a1ef67354291a4d41ce