go言語を1ヶ月ほど勉強したので基本的な特徴などを書いて起きます。完全自分用。
ちなみにソースはこちら
https://github.com/umanari145/golang_sample
- コンパイラ型なので型の定義、初期化などにややうるさい。
- 定義して使用しない、importして使用しないパッケージがあるとコンパイルエラー
やり始めでこけるのはまず上記のような特徴でしょう。
上記のような言語としてはやや厳しい特徴があるため正直、生のエディタで作業をするのは難しいでしょう。特に定義して値を代入しないと、落ちてしまうのに自分は最初びっくりました。作業効率アップのためには自分はatomにgo-plus,goto-definetion,go-lintというプラグインを使いました。
これらにより、コードを書いて保存をしただけで下記のことをやってくれます。
- 適切なimportを自動で選んでくれる
- オートフォーマット
- エラーを検知
- 入力補完
などの機能がついています。わかりやすくいうとJavaを描くときのEclipseやNetBeansみたいなものかと思います。逆にいうとプラグインなしでやるのはJavaを素のエディタを使って描くような荒行に近いです。
- クラスはないが、「構造体」と言われるものが近い
自分もまだあんまりわかってませんが、大まかにPHPのクラスはgoでは構造体と理解しております。
- intとfloat,stringなどの扱いが厳しい
Javaなどやっている方であれば当たり前でしょうが、数字と文字をしっかり意識しなくてはいけないこと、整数と少数が違うことなどわかっていないと最初は厳しいです。
- 比較的簡単なデータはmapの配列で処理し、複雑な場合は構造体の配列で定義。
これまたJavaなどと近いですが、なんでもかんでも配列で処理はできないので単純なkey-value型はmapで処理し、ある程度複雑だったりイレギュラーなデータは構造体で扱います。
- スコープはブロックスコープと関数のスコープとパッケージスコープがある。publicとprivateの違いは行頭が大文字か小文字か。
ブロックスコープがある以外のスコープの考え方はPHPなどと近いでしょう。ただし、publicとprivateを区別するのに先頭の文字が大文字か、小文字かになります
他にも色々ありますが、また今度。