昨日に続いてGoの勉強。

この本の1章、2章をを終えて3章に。

Go言語によるWebアプリケーション開発
Mat Ryer
オライリージャパン
売り上げランキング: 73,002

アバター画像を表示する

1章、2章までを終えるとWebSocketを使って簡単なチャットクライアントアプリケーションが出来上がる。

3章ではアバターの画像を設定することになる。

messageという構造体にAvatarURLというstringのフィールドを追加して、cookieにそのデータを保存/取り出しする感じ。

Goのhttpモジュールのドキュメントとかを読みながらちょこちょこ進めている。

この章を終えるとこんな感じになる。

スクリーンショット 2016 05 24 9 30 10

あとx.(T)でキャストになるということを知った。参考はこちら

これは型アサーションというらしく変換結果として(T. bool)型のペアを返すらしい。、t, ok := x.(T) のように変換結果と変換に成功したかを取得することができる。

以下のコードはCookieに avatar_url が含まれているかを確認しているが、この取得できたかどうかを型アサーションを使って確認している。

なるほどなるほど、という感じ。

Swiftだとこういう型の変換に失敗するかどうかはメソッド、イニシャライザ、プロパティなどのインターフェースを見れば分かる。Optionalがあるから。

あまりGoのことを理解していないけど、Swiftはこの辺Optionalで表現力が非常に豊かだなと感じる。

Swiftが発表された時にMulti Return Typesをフェデリギさんが特長として挙げていたけど、これもこれで悪くはないなと思う。ただSwiftみたいにOptional Bindingできればいいのにな、と思ったり。

まとめ

ちょっと話がそれたけど3.1まで終了。

次の3.2はアバターのURL取得を抽象化するらしい。要するにインターフェース/プロトコルを実装するっぽい。

ここまで読んだ感じ、Goも抽象化による実装を推しているのでSwiftとの違いを見ていけると良いな。

Go言語によるWebアプリケーション開発
Mat Ryer
オライリージャパン
売り上げランキング: 73,002