Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
イケてる
Gopherになれる
5つのポイント
2013/06/17(火)
@ヒカルのgo
自己紹介
上田拓也
KLab株式会社
仕事:
Webviewと戦う仕事
趣味:
Go言語, JS
twitter : @tenntenn
ポイント 1
channelとgoroutineを使いこなせ!!
http://www.slideshare.net/takuyaueda967/goroutinechannelgogolang2
for - selectパターン
● 各Goroutineが無限ループになっており、イベント
リスナー的にChannelを使うパターン
Goroutine-1
Channel-1
Channel-2
select
for{}
Goroutine...
Gopher君で表すとこんな感じ!
ひたすら本を入れる
ひたすら本を運ぶ
ひたすら台車を運ぶ
ひたすら本を燃やす
ポイント 2
structの埋め込みを使いこなせ!!
http://qiita.com/tenntenn/items/e04441a40aeb9c31dbaf
http://qiita.com/tenntenn/items/f2a154dd43...
埋め込み
type Hoge struct {
N int
}
type Piyo struct {
Hoge
M int
}
func main() {
piyo := &Piyo{Hoge{1}, 2}
fmt.Println(piyo.N...
埋め込みを使ったインタフェースの実装
type Hoge interface {
A()
B()
}
type Fuga struct{ *Piyo }
func (f *Fuga) A() { fmt.Println("Fuga A") }
...
ポイント 3
typeをうまく使いこなせ!!
http://qiita.com/tenntenn/items/c3afc87a20d9f50998bb
組込み型のエイリアス型を作る
type Hex int
func (h Hex) String() string {
return fmt.Sprintf(“0x%x”, int(h))
}
関数に実装させる
type TaskFunc func()
func (f TaskFunc) Do() {
f()
}
net/httpでも使われている
http.HandlerFunc
ポイント 4
reflectをうまく使いこなせ!!
http://www.slideshare.net/takuyaueda967/reflect-27186813
https://github.com/goken/goken/blob/mas...
標準ライブラリでも結構使われている
● encoding/jsonとかで使われている
● ジェネリクスがないので、reflectを使う場面が多
い
func Unmarshal(data []byte, v interface{}) error...
ポイント 5
Gopher君をうまく使いこなせ!!
https://github.com/golang-samples/gopher-3d
https://github.com/golang-samples/gopher-vector
シーン:チケットの起票
   (( [チケット]
[チケット]
   ʕ ◔ϖ◔ʔ   [チケット] ))
   |ヽ○==○  [チケット]
  c |  ||_ | [チケット]
  し' ̄(_)) ̄(_)) ̄(_)
シーン:進捗を煽る
バン   はよ
バン ʕ∩ ◔ϖ◔ʔ バン はよ
  / ミつ/ ̄ ̄ ̄/
  ̄ ̄\/___/
シーン:ランチに誘う
バン   はら減った
バン ʕ∩ ◔ϖ◔ʔ バン はら減った
  / ミつ/ ̄ ̄ ̄/
  ̄ ̄\/___/
シーン:3Dゲームを作る
シーン:合体させてみる
まとめ
● channelとgoroutineを使いこなす
● structの埋め込みを使いこなす
● typeをうまく使いこなす
● reflectをうまく使いこなす
● Gopher君をうまく使いこなす
Go言語の初心者が見ると幸せになれる...
時間あまったら
codegangsta/cli 便利!
https://github.com/codegangsta/cli
● コマンドラインツールを作るためのライブラリ
● コマンドライン引数が簡単に扱える
● サブコマンドが簡単に作れる
Upcoming SlideShare
Loading in …5
×

Iketeru Gopher 5 points

4,073 views

Published on

Published in: Technology

Iketeru Gopher 5 points

  1. 1. イケてる Gopherになれる 5つのポイント 2013/06/17(火) @ヒカルのgo
  2. 2. 自己紹介 上田拓也 KLab株式会社 仕事: Webviewと戦う仕事 趣味: Go言語, JS twitter : @tenntenn
  3. 3. ポイント 1 channelとgoroutineを使いこなせ!! http://www.slideshare.net/takuyaueda967/goroutinechannelgogolang2
  4. 4. for - selectパターン ● 各Goroutineが無限ループになっており、イベント リスナー的にChannelを使うパターン Goroutine-1 Channel-1 Channel-2 select for{} Goroutine-2 for{} Goroutine-3 for{}
  5. 5. Gopher君で表すとこんな感じ! ひたすら本を入れる ひたすら本を運ぶ ひたすら台車を運ぶ ひたすら本を燃やす
  6. 6. ポイント 2 structの埋め込みを使いこなせ!! http://qiita.com/tenntenn/items/e04441a40aeb9c31dbaf http://qiita.com/tenntenn/items/f2a154dd436c0fa37c5b
  7. 7. 埋め込み type Hoge struct { N int } type Piyo struct { Hoge M int } func main() { piyo := &Piyo{Hoge{1}, 2} fmt.Println(piyo.N, piyo.M) fmt.Println(piyo.Hoge.N, piyo.M) }
  8. 8. 埋め込みを使ったインタフェースの実装 type Hoge interface { A() B() } type Fuga struct{ *Piyo } func (f *Fuga) A() { fmt.Println("Fuga A") } type Piyo struct{} func (p *Piyo) B() { fmt.Println("Piyo B") } func main() { var hoge Hoge = &Fuga{&Piyo{}} hoge.A() hoge.B() }
  9. 9. ポイント 3 typeをうまく使いこなせ!! http://qiita.com/tenntenn/items/c3afc87a20d9f50998bb
  10. 10. 組込み型のエイリアス型を作る type Hex int func (h Hex) String() string { return fmt.Sprintf(“0x%x”, int(h)) }
  11. 11. 関数に実装させる type TaskFunc func() func (f TaskFunc) Do() { f() } net/httpでも使われている http.HandlerFunc
  12. 12. ポイント 4 reflectをうまく使いこなせ!! http://www.slideshare.net/takuyaueda967/reflect-27186813 https://github.com/goken/goken/blob/master/goken08-reflect/goken08-reflect.md
  13. 13. 標準ライブラリでも結構使われている ● encoding/jsonとかで使われている ● ジェネリクスがないので、reflectを使う場面が多 い func Unmarshal(data []byte, v interface{}) error interface{}型でポインタを受け取り、reflectパッ ケージで値を設定している
  14. 14. ポイント 5 Gopher君をうまく使いこなせ!! https://github.com/golang-samples/gopher-3d https://github.com/golang-samples/gopher-vector
  15. 15. シーン:チケットの起票    (( [チケット] [チケット]    ʕ ◔ϖ◔ʔ   [チケット] ))    |ヽ○==○  [チケット]   c |  ||_ | [チケット]   し' ̄(_)) ̄(_)) ̄(_)
  16. 16. シーン:進捗を煽る バン   はよ バン ʕ∩ ◔ϖ◔ʔ バン はよ   / ミつ/ ̄ ̄ ̄/   ̄ ̄\/___/
  17. 17. シーン:ランチに誘う バン   はら減った バン ʕ∩ ◔ϖ◔ʔ バン はら減った   / ミつ/ ̄ ̄ ̄/   ̄ ̄\/___/
  18. 18. シーン:3Dゲームを作る
  19. 19. シーン:合体させてみる
  20. 20. まとめ ● channelとgoroutineを使いこなす ● structの埋め込みを使いこなす ● typeをうまく使いこなす ● reflectをうまく使いこなす ● Gopher君をうまく使いこなす Go言語の初心者が見ると幸せになれる場所 http://qiita.com/tenntenn/items/0e33a4959250d1a55045
  21. 21. 時間あまったら
  22. 22. codegangsta/cli 便利! https://github.com/codegangsta/cli ● コマンドラインツールを作るためのライブラリ ● コマンドライン引数が簡単に扱える ● サブコマンドが簡単に作れる

×