Upgrade to Pro — share decks privately, control downloads, hide ads and more …

golang

 golang

tsuyoshi nakamura

August 31, 2016
Tweet

More Decks by tsuyoshi nakamura

Other Decks in Technology

Transcript

  1. Go lang入門
    2015-12-11
    社内勉強会
    Tsuyoshi Nakamura

    View Slide

  2. 動くデモまで出来れば良
    かったのですが、すいま
    せん間に合いませんで
    した。

    View Slide

  3. アジェンダ
    •  Go langって?
    •  開発環境まわり
    •  今までのphp,java等のオブジェクト志向言語との違い
    •  まとめ

    View Slide

  4. Go言語って?
    •  登場時期:2009年
    •  Googleが開発
    •  静的型付言語 
      今まで多く使ってきたLL言語とはちょっと違う
      「コンパイルが必要 → javaをイメージ → 遅い」とはならない。らしい
      コンパイルされる為、凡ミス的なsyntax errorとかは心配ない
      LLライクなC
    •  ググる場合は 「go lang」とlangをつけないとヒットしない(個人的に一番重要)

    View Slide

  5. 開発周り
    •  /usr/local/goに最新のgoをダウンロードして解凍。.bashrcを設定で終わり
    export GOPATH=~/.go
    export PATH=$PATH:/usr/local/go/bin
    •  エディタ:fatih/vim-go(オールインワンプラグイン)あれば良い感じがする
    vimのパッケージ管理(neobundle)経由で「NeoBundle ‘fatih/vim-go’」で速攻入る
      それ以外に使っているプラグインは
        「scrooloose/syntastic」シンタックスチェック
        「ervandew/supertab」tabでコード補完
    •  IntelliJ周りは知らん
    •  標準でテストライブラリがgo言語にはあるけど「assertequals」使えないので
      (https://github.com/stretchr/testify)使おうと思ってるけど試してない
      ※吉田さん教えてくれた
    •  対話式の確認したい時(https://github.com/motemen/gore)。REPL
      ※吉田さん教えてくれた
      コードの変更、保存をトリガーにホットデプロイのリロードしてくれるプラグインも
      あるらしいので、合わせて検討中

    View Slide

  6. オブジェクト志向言語との違い
    •  継承して拡張して使っていくという考えがない
      ややこしいけど、「合成・埋め込み」という考えがあり、それが代替になるっぽい
      
      親クラスからまるっとメソッド等をもらって、独自に拡張するのでなく
      再利用可能な部品を作り、必要に応じて合成して使うイメージ
    •  例外処置として「panic()」「recover()」とかあるけどtry〜catchとは何か違う。
      まだ慣れてない。。。
    •  略が多い。「var aaa int = 10」 = 「aaa := 10」
    •  ハードタブ
    •  関数の{} 位置が決まってる
    •  ポインタ、並列処理、マップ、スライス、構造体、インターフェイス等々。。。

    View Slide

  7. まとめ
    •  基本的なことはなんとなく理解できた。結構違う部分が多い気がする
      いろいろとはまりどこりいっぱいありそう
    •  フレームワーク、ORM、テストあたりを触ってみる

    View Slide