Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

開発周り •  /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   ※吉田さん教えてくれた   コードの変更、保存をトリガーにホットデプロイのリロードしてくれるプラグインも   あるらしいので、合わせて検討中

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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