SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
イケてる
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
● コマンドラインツールを作るためのライブラリ
● コマンドライン引数が簡単に扱える
● サブコマンドが簡単に作れる

Weitere ähnliche Inhalte

Mehr von Takuya Ueda

Mehr von Takuya Ueda (20)

マスター・オブ・goパッケージ
マスター・オブ・goパッケージマスター・オブ・goパッケージ
マスター・オブ・goパッケージ
 
メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新
 
Go1.8 for Google App Engine
Go1.8 for Google App EngineGo1.8 for Google App Engine
Go1.8 for Google App Engine
 
Go Friday 傑作選
Go Friday 傑作選Go Friday 傑作選
Go Friday 傑作選
 
GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発
 
Static Analysis in Go
Static Analysis in GoStatic Analysis in Go
Static Analysis in Go
 
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
エキスパートGo
エキスパートGoエキスパートGo
エキスパートGo
 
Go静的解析ハンズオン
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオン
 
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
 
Gopher Fest 2017参加レポート
Gopher Fest 2017参加レポートGopher Fest 2017参加レポート
Gopher Fest 2017参加レポート
 
Google Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめGoogle Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめ
 
Cloud functionsの紹介
Cloud functionsの紹介Cloud functionsの紹介
Cloud functionsの紹介
 
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現するgoパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現する
 
Cloud Functionsの紹介
Cloud Functionsの紹介Cloud Functionsの紹介
Cloud Functionsの紹介
 
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
 
Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践
 
Mobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse BindingMobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse Binding
 

Kürzlich hochgeladen

Kürzlich hochgeladen (7)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

Iketeru Gopher 5 points