×
  • Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
 

Iketeru Gopher 5 points

on

  • 155 views

 

Statistics

Views

Total Views
155
Views on SlideShare
125
Embed Views
30

Actions

Likes
4
Downloads
0
Comments
0

2 Embeds 30

https://twitter.com 20
http://d.hatena.ne.jp 7

Accessibility

Categories

Upload Details

Uploaded via SlideShare as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Iketeru Gopher 5 points Iketeru Gopher 5 points Presentation Transcript

    • イケてる 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-2 for{} Goroutine-3 for{}
    • Gopher君で表すとこんな感じ! ひたすら本を入れる ひたすら本を運ぶ ひたすら台車を運ぶ ひたすら本を燃やす
    • ポイント 2 structの埋め込みを使いこなせ!! http://qiita.com/tenntenn/items/e04441a40aeb9c31dbaf http://qiita.com/tenntenn/items/f2a154dd436c0fa37c5b
    • 埋め込み 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) }
    • 埋め込みを使ったインタフェースの実装 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() }
    • ポイント 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/master/goken08-reflect/goken08-reflect.md
    • 標準ライブラリでも結構使われている ● encoding/jsonとかで使われている ● ジェネリクスがないので、reflectを使う場面が多 い func Unmarshal(data []byte, v interface{}) error interface{}型でポインタを受け取り、reflectパッ ケージで値を設定している
    • ポイント 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言語の初心者が見ると幸せになれる場所 http://qiita.com/tenntenn/items/0e33a4959250d1a55045
    • 時間あまったら
    • codegangsta/cli 便利! https://github.com/codegangsta/cli ● コマンドラインツールを作るためのライブラリ ● コマンドライン引数が簡単に扱える ● サブコマンドが簡単に作れる