2017年9月16日

日記

Go って Java のクラスみたいにメソッドをクラスの中で定義するのではなくて、レシーバを指定した関数として別に定義するようになってるので、普通に外部のパッケージからメソッドの追加をできるのかと思ってたのだが(というか、ソースコードをイジれないライブラリでもメソッドを追加できるとか書いてたと思うんだが)、残念ながら同パッケージ内でしかメソッドは定義できないようね。 型エイリアスや埋め込みを使えばできるようだけど、既存のメソッドなどに微妙に型変換が必要になってそれはそれで面倒くさい。 なんだかなぁという仕様だ。 this や self のような自身を指定するキーワードが必要ない、程度メリットなのか・・・?

プログラミング言語 Go』の練習問題でディレクトリ階層を作成して云々という問題があったが、本書ではほとんど説明なく、練習問題の後に特に説明無くディレクトリを作成するコードが書かれてる程度だったのでパッケージドキュメントを軽く読んでみたのだが、まぁそんなに難しくないとはいえ、これを説明なしで使えというのはどうなのかと。 んなこと言い出したら、本書の半分以上はいらんような気がするけど・・・ この本、ファイル関連や IO のまわりの説明がほとんどないのが致命的な気がする。 うーん、この本を読み続けるか別の本探そうかちょっと悩む(とりあえず人には勧める気にはならんな)。

ツイート (ツイート数 58)