LoginSignup
0
0

More than 3 years have passed since last update.

Go言語はじめた勉強メモ1 フォーマッターとコメントとセミコロン

Posted at

この記事について

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();
}

なぜならこう解釈されてしまうためです。(多分)

参考文献

Effective Go

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0