2012年12月23日

「プログラミング言語Goフレーズブック」と「基礎からわかる Go言語」を読みました。 #golang

2012/10/4発売の「プログラミング言語Goフレーズブック」(以下、フレーズブック)と 2012/11/21発売の「基礎からわかる Go言語」(以下、基礎Go)をようやく読み終えました。

フレーズブック

プログラミング言語Goフレーズブック
David Chisnall デイビッド・チズナール
ピアソン桐原
売り上げランキング: 414,479

フレーズブックは、下記の2012/4/30に発売された「The Go Programming Language Phrasebook (Developer's Library)」という本の日本語版です。

The Go Programming Language Phrasebook (Developer's Library)
David Chisnall
Addison-Wesley Professional
売り上げランキング: 173,081

どうでもいいかもですが、フレーズブックの日本語版は、原著よりサイズ的に大きそうです。 (参考記事:Goフレーズブックと原著のサイズ比較 #golang)

フレーズブックは、訳者まえがきにもありますが、初心者向けではないとのことです。 Go言語のインストール手順が明記されていないことからみても、超初心者向けではないことがわかります。

この本のサブタイトルに「使いこなすためのコード&イディオム100+」とあり、使いこなすためのコードが多く紹介されています。 内容はGo言語の特徴はすべて網羅していると思います。 いろいろ役に立ちそうなコードがあったのですが、ひとつだけ紹介すると、6.2で出てくる下記のコードです。

package main

import "fmt"

func main(){
    str := "Go言語"
    //これを行なってはいけない・・・@
    for i:=0; i < len(str); i++ {
        fmt.Printf("%c", str[i])
    }
    fmt.Printf("\n")
    //代わりにこちらを使う・・・A
    for _,c := range str {
        fmt.Printf("%c",c)
    }
    fmt.Printf("\n")
}

文字列中の文字をループする単純な方法は、forループを使用することですが、 @の方法はバイト単位でループし、文字単位ではないため、 マルチバイト文字なんかは、Go言語の文字列はUTF-8なので、正しく読み取れないことになります。 Aではrangeを使っていますが、これを使えばたいていは正しく読み取れるとのこと。 このような使いこなすためのコードが他にもたくさんあります。

読み終える期間としては、昼間仕事して夜や土日に写経したりして、本でも分からないところは 公式ページみたりして勉強したとしても1ヶ月かからないくらいでした。

基礎Go

基礎からわかる Go言語
古川 昇
シーアンドアール研究所
売り上げランキング: 147,016

この本は表紙にも書いてありますが、Go言語の入門に最適な1冊だと思います。 開発環境の構築方法から始まり(Windows,Mac,Linuxに対応)、 Go言語の基本的な文法が8章まで続き、最後に9章で逆引きサンプルが57サンプルもあり 充実した内容となっていると思います。

フレーズブックとかぶっていることころも多いのですが、 フレーズブックは訳本ということもあり、すこし癖が強く若干読みづらい箇所があります。 それにくらべて、基礎Goは、日本人が書いているためとても読みやすいと思います。 少し残念なのは、フレーズブックには1ページちょっとですがユニットテストの説明がありましたが、 基礎Goにはユニットテストの説明がなかったことぐらいでしょうか。 次回、基礎からわかるGo言語2なるものが出る際は、ご検討ください。

期間ですが、これもフレーズブックと同じように写経したりして、 全部で51節ありそのうち最初の20節はさっと読んだだけですが、 だいたい20日ぐらいでした。

補足

上記の本の順番は、発売順に書いたものです。また、どちらの本もGoバージョン1に対応しています。

Go1に対応していませんが、Google App Engineであれば、こちらが参考になると思います。(私は持ってませんが、、、すみませn)

Go言語プログラミング入門on Google App Engine
横山 隆司
秀和システム
売り上げランキング: 535,048
タグ:golang
posted by やし at 15:05 | Comment(0) | golang | このブログの読者になる | 更新情報をチェックする

     このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。