📝
Go言語自分的ハマりどころと現在の理解度
はじめに
こんにちは、Rabeeです。
今回は自身がGo言語学習においてハマったところをリストアップしていきます。
私含め初学者の孤独感を和らげることができればと思います。
(ポインタにはハマらなかったので割愛)
変数定義
- 第一印象: 型指定後ろなの問題
var i int
- 理解:
- 最近はこういうのも多いらしいと同僚が言っていたのを鵜呑み
レシーバ
- 第一印象: 何を受け取っているの?普通にJavaでいうところのクラス変数にアクセスさせてよ問題
- 理解
- そもそも構造体をクラスとしてその中にメソッドが記述されているという認識が違った。コンパイル時にメソッドの引数となっているので、レシーバ変数経由でアクセスするしかない。
ファイル長い
- 第一印象: 対して処理していないのにずいぶん縦に長い問題
- 理解
- throw/raiseがなくエラー処理を都度都度書くため。脳死で
if err != nil {}
を何度も書くっていうのがGo。
- throw/raiseがなくエラー処理を都度都度書くため。脳死で
行の最後にセミコロン不要
- 第一印象: Rubyと同じ感じで楽でいいな、と思ったらJSと切り替えて作業すると混乱をきたす問題
- 理解
- これはどうしようもない。頭の切り替えが遅いという別問題
- セミコロンがないからなのか、複数行の文字列を定義するには文末に\入れるか`で囲むかしないといけない
ダックタイピング
- 第一印象: なにそれ、すごいゆるいけど問題
- 理解
- ガチっとimplementしないといけないってことないこのゆるさがよい。ただし、それを実戦で使いこなす場面はなかなかない。実例あれば知りたい。
配列
- 第一印象: ミュータブルがいいからsliceを普通は使おうかな
- 理解
- sliceが使いやすい。他言語の普通の配列。append毎にコピーされる?速度を求めるなら配列?その辺りはまだ分からない。実務で配列を使う場面はない。
最後に、まだ乗り越えてない壁
- 各種便利モジュールをそらで使えない
- strings
- strconv
- iota
- リフレクション
- channel
- unsafe
おわり
Discussion