読者です 読者をやめる 読者になる 読者になる

chikuchikugonzalezの雑記帳

趣味とか日記とかメモとか(∩゚д゚)

そういえばGo言語の感想とか書いてなかった

ちょっと前に仕事で使うかもー、みたいなこと言われたのをきっかけにGo言語触ってたりしたんですが、現時点(Go1.2~1.3)での感想とか(・3・)アルェーなところとかまとめてなかった。すでに出遅れ感ありまくる。

良いところ

主に

  ( ゚д゚) ガタッ
  /   ヾ
__L| / ̄ ̄ ̄/_
  \/   /

って気分になったところ

  • 画像処理系ライブラリが標準装備
  • テンプレート処理が標準装備
  • コンパイルして、実行可能ファイルができる
    • exerb/ocraとかpy2exe/cx_Freezeとかexewrap/launch4jとかしなくていいんですね(・∀・)
  • パッケージマネージャ標準装備
  • 整形ツールも標準装備
合わないなー、と思ったところ
(´・ω・`)
  • GOROOT の扱い
    • ZIP版使ってるとこいつがC:\Go固定なせいで、環境変数設定必須になるところ
      • (別ドライブにインストールしてるせいとも)
      • 誰だよ、設定しなくていいっていったのは
  • 自分の作業パスがGOPATH以下じゃないとだめなのかよ?的なとこ
    • 正直、最初に作業するときからgithub/bitbucketに置くとか考えたくない
  • タブインデント
  • go fmtしたら+演算子とかの前後の空白が消滅すること
    • あれ見辛いんだけどどうにかならん?
  • os.ExpandEnvがWindows環境変数を展開してくれないこと
    • pythonのos.path.expandvarsは対応してるのに…
    • Issue上がってたけどどうなるんだろ
  • 使わないimportをエラーしないでほしい
    • 警告でいいと思うんだが
  • 静的リンクしかできないというのはどうなんだって思うことがある
    • Packerのアーカイブ見てだいたい10MBクラスの実行可能ファイルがずらーって並んでるのを見た感想

あれ、不満点が多い;つД`)

その他

たぶん、パッケージマネージャとクロスコンパイルが簡単にできるC言語って考えたほうがいいよね。

あと、最近やったやつだと

if err := hoge(); err != nil {
    return err
}
if err := fuga(); err != nil {
    return err
}
if err := piyo(); err != nil {
    return err
}
return nil

みたいなコード書きまくっちゃったんだけど、これを

try {
    hoge()
    fuga()
    piyo()
} catch (err error) {
    return err
}
return nil

みたいに、一か所でまとめてできねぇかなって思ってる.