Golang Cafe 版
あ Go い
ぶ 知 い 10
Takashi Yokoyama GDG Chugoku
I’m “not” professional.
● GDG TyuChugoku Organizer (2010-)
● 趣味
○ Google Apps / GCP関係
○ Golang / Dart
● (6 年 )→ ー ン (5 年 )→ 臨時的任
用 公務員 (1 年 7 ヶ月 )→ 来年正式採用予定
日
Golang Cafe いう ベン
議論 ン
Go1.4 新機能 関 事
紹
1. Goroutine is not thread.
● Goroutine ッ い
● go func() {...} 生成 実行
い
● Goroutine キュー う 溜 い
● ワー ー ッ goroutine キュー
出 実行
1. Goroutine is not thread.
● 本当 チ ッ 動 い時
○ runtime.GOMAXPROCS(runtime.NumCPU())
○ runtime.GOMAXPROCS() 初期値 1
■ 変更 挙動 変わ
● キュー goroutine 作 構わ
い
2. Goroutine 替え
● Goroutine 替わ タ ン
○ 明示的 ッ 時
■ net.TCPListener#Accept()
■ http.ListenAndServe()
■ time.Sleep()
■ Channel 信待
○ ァ 書 込 image ータ 書 込
替わ い
3. panic() 使い所
● 例外機構 使え …
○ panic() び出 後 recover() び出
終了 防
■ recover() defer 登録 関数内 使え
■ Golang標準 ッ ー 使 い い 代表的 encoding/json
● json 構文 ー あ 時 一気 戻 い い い
3. panic() 使い所
● Golang ー 関数 戻 値 返
そ 場 ー処理 推奨 い
● 従 panic() び出 時 う う
い時
○ 例 fmt.Printf() 失敗
■ → 恐 何 壊 い
4. os.Exit() log.Fatalf()
● 関数 終わ 後 び出 defer
● os.Exit() や log.Fatalf() び出
セ 終了 う
○ defer 後処理 べ び出 い
○ う 後処理 い事 あ い main
goroutine 終わ う
5. error 比較 罠
● 自 定義 error 作 方法
○ errors.New(“任意 キ ”)
○ fmt.Errorf(書式, …)
● ー 変数 先 作 い
違う 一致 い
○
http://play.golang.org/p/B61bMHficX
5. error 比較 罠
● 関数 返 error 定義
返 あ う
○ 面倒 fmt.Errorf(“ ー\n”) び出 側
困 い
Go 1.4 関
6. for 文 様変更
● for k, v := range x {...}
● for v := range x {...}
○ 必 値 変数 記述 い
● い時
○ for _ = range x {...}
6. for 文 様変更
● Go 1.4
○ for range x {...}
○ 省略 可能
7. Go Android 動
● go.mobile ッ ー
○ 公式サ ッ ー
○ Android NDK 動作
○ (当然) Java び出 事 可能
○ サン 動 Qiita 記事 書い
先ほ 追記
■ http://qiita.com/ttyokoyama/items/07729cfb03ef0 53ef669
7. Go Android 動
●
○ 描画:drawコー ッ○ タッチ:touchコー ッ
● Todo
○ Activity サ 対応 関数 実装
7. Go Android 動
● 新 い資料 公開 い 後 読
下 い
● http://talks.golang.org/2014/gothamgo-androi
d.slide
8. TestMain 関数 追加
● UnitTest
setup/teardown 処理 記述 必要 あ
● func TestMain(m *testing.M) 追加
○ 全 共通 setup/teardown処理 記述 う
9. go generate コ ン 追加
● ァ 先頭 コ ン コ ン 記述
○ 書式://go:generate [任意 コ ン ] ータ...
○ 例://go:generate gen
■ genコ ン 実行 type 合わ 便利 関数 生 成
10. そ 目 い 変更
● syscall ッ ー go.sys ッ ー
○ 1.3 syscall ッ ー 複数 OS コー あ
○ 1.4 syscall ッ ー 凍結
■ go.sys ッ ー 各OS 処理 実装
■ 1.3 互換性 残
10. そ 目 い 変更
● Canonical import paths
○ 標準 import先 明記 コン 時 チ ッ
構成 違う ー
○ package hello // import
“github.com/tyokoyama/canonicalsample/hello”
○ 例え github 移動 時
正規 使 欲 い時 使え
10. そ 目 い 変更
● File name handling
○ 以前 ”windows.go” ”amd64.go” 書い あ
正 コン い
○ 1.4 ”os_windows.go”
”support_amd64.go” いう 名 強制
○ Go ァ 名 _ 区 コン 時
環境 合う 選択 コン
10. そ 目 い 変更
● 公式サ ッ ー Google Code
golang.org 移行
○ golang.org/x/... 2015年6月 正式
○ う go get 可能
● Go github 移行
○ hgコ ン 解放
○ git Go 運用
公開資料
● サン コー 日 Demo
○ https://github.com/tyokoyama/devfestkyoto2014