この記事について
Cでプログラミングが苦手になりJavaで仕事をしJavaScriptでフリーランスになった私がGoエンジニアを目指すためにがんばっている様子の勉強メモです。半年以内にGo言語で開発プロジェクトに参加することが目標。
実は以前にGoとMangoDBで画像アップローダ&Photoギャラリーを5日集中で作ったのですが、フレームワークを使ったことと時間をかけられなかったこともあってほぼGoの基本的なところが抑えれらていないと感じたため0から再度学び直すことにしました。
学習プラン
- Effective Goをチラ見して雰囲気をつかむ(Done)
- A Tour of Goをやってみる(Done)
- UdemyのWeb developmentのコースをやってみる(Now)
- 何か作ってみる
Effective Goの最初をかいつまんでみる
フォーマット
formatterが標準搭載だそうです。好みの戦争が起きない(はず)
意外と開発時にあとで整えようとするとGitのDiffの関係でなかなかやりにくかったりするフォーマットの統一がすでにあるのは嬉しい。
- インデントはTab(スペース派閥涙目)
- 行の長さの制約なし
- CやJavaと比較して少ないかっこ()を目指した文法
コメントの書き方
見慣れた感じのやつ。
/* こんな感じ
複数行OK */
もしくは
// こんな感じ
セミコロンについて
CやJavaのように行末セミコロンは不要だが、コンパイル時に挿入される。使うのは、IF文の条件式中が複数行にわたる時、典型的なFor文とかとか。
if err := file.Chmod(0664); err != nil {
log.Print(err)
return err
}
for i := 0; i < 10; i++ {
sum += i
}
ルールとしては、「Statementを終了させる可能性のあるTokenの後ろに改行があれば、セミコロンを挿入する」とのことです。Effective Goより
“if the newline comes after a token that could end a statement, insert a semicolon”.
とりあえずよくわかんないですね。Tokenは意味のあるかたまりで、ここではコンパイラから見た意味合いのTokenなのだと思います。例えばver, importなどの予約語もToken、自分でつけた変数名は識別子というToken、=, >, - などの演算子、{, }, ; などの記号もTokenなどなど。
何はともあれ、改行は多少気をつけないといけない事はわかりました。なので・・・
if i < f() {
g()
}
これはOKだけど
if i < f() // wrong!
{ // wrong!
g()
}
こうは書けない。(ちなみにこの記述がOKの言語でもこう書かれると私はちょっとイラッとします)
if i < f();
{
g();
}
なぜならこう解釈されてしまうためです。(多分)