ヒカルのGO! #3開催を開催しました
ヒカルのGO! #3開催を開催しました
本日10月27日、DeNaさんのオフィスでヒカルのGO!(hikarie.go)を開催しました!
内容は
- goroutineとchannelのハンズオン(by @ryusen33)
- .NETでGOを動かす(by @azyobuzin)
- 業務でgoを使う話 (by @katoryoさん)
- vim go extraの話(by @yosuke_furukawaさん)
というものでした‼
感想
自分のハンズオンは開催前にjxckさんやazyobuzinくんに意見をもらったおかげで割とスムーズにいっていたと思うんで、失敗ではなかったかとおもいます。(成功ってわけでもない)、parallelとconcurrentの話(goroutineは完全な並列処理じゃないんだぜ!)っていう話がうまく伝わってなかったかなぁ、、、という感じはありました、質問されたときにも答えられなかったし、まだまだもっと修行を積まなければなりませんね。
そのあと`azyobuzinくんの.NETでGoをする話を少し。次回登壇フラグが立った気がする
@katoryoさんのは重たい処理をしてるときに音楽を流して気分を良くしよう=業務で使おう!という話とlite IDEの話でした。lite IDEは入れただけで使えてなかったので次から使えたらなぁ、、、と思っています。
yosuke_furukawaさんの話はvimのvim go extraをつかってvimから楽々go生活をしよう!というものでした、自分は前に一回misc以下にパス通してシンタックスされなくて、それでvimを使うのをやめてしまったので、この機会にもう一度トライしたいな、と思っています。
反省点、次回への意向
- 次回はハンズオンのレベルを上げる(技術的な意味で)
- 全体的に初中級者向けから、gopherへの役立つTips共有みたいな会にする
- 開催前にできるだけLT発表者を確保しておく
みたいな感じでしょうか
僕は次回ではnet/httpパッケージの中身を読んでみた、みたいなはなしができたらな〜と思っています。次にはLT枠を埋めたいですね。。。
Hatena Blog でコードのシンタックスをする
type user struct { ID int64 `json:"id"` Name string `json:"name"` ScreenName string `json:"screen_name"` } type status struct { ID int64 `json:"id"` Text string `json:"text"` User user `json:"user"` }
ぐぐってもあれ?これ違くね?って思ってたらじぶんが書き方を「はてな記法」じゃなくて「markdown」にしていたのを忘れていたという話です。markdownの普段通りの書き方できちんとシンタックスされます。大丈夫でした。
gorutineについて少しずつまとめる(1)
どうもryusen33です。
今回は10月末に開催される予定のヒカルのgo(hikarie.go)#3のハンズオンで取り上げることになっているgorutineについて少しずつまとめていこうと思います。
・まずgorutineってなんですか
gorutine(読み方はゴルーチン)というのは複数の処理を並列に処理できる機能のようなものです。
@tenntennさんのスライドめっちゃ参考になります↓
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会 あとは
Amazon.co.jp: 基礎からわかる Go言語: 古川 昇: 本 を参考にしました。
これを実行すると
hello 0
hello 1
hello 2
hello 3
hello 4
fin
となり、func testが1~4までの数字を出力するのに4秒かかっていることから、その間func mainが呼ばれていないので、並列に処理していないことがわかります。
並列に処理したいですよね
並列に処理したいときは
go 並列に処理したい関数
と書くことができます。
やってみると
hello 0
hello 1
hello 2
fin
となります、前回のはhello 4 まで出力されていたのに、今回はfunc mainと func testを並行に処理しているので、4秒たってhello 4が出力される前に3秒で終了するfunc mainが終了してしまうので、hello 2までしか表示されないということです。
以上が簡単なごルーチンの解説です、簡単な、というだけあって、まだ続きがあります、それはまた次回に。
goのflagについて淡々と。
go弱のryusen33です、今回はflagについてまとめてみようかなと思います。
まずflagとはなにかという話です、
端的にいうとflagとは、
goで簡単にコマンドオプションを使えるパッケージとのことです。
実際には下記のように使います。
$ run main.go
banana
chocorate
となりますが、flagをつかっているので
$ run main.go -a=hogehogehoge
$hogehogehoge
banana
chocorate
とすることができます!
やったね!
ちなみにflag.parseは関数外ではできません。関数内でよろしくお願いします。