Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Go_2のドラフトを読む__エラー編_.pdf
Search
take_cheeze
October 04, 2018
0
1.5k
Go_2のドラフトを読む__エラー編_.pdf
take_cheeze
October 04, 2018
Tweet
Share
More Decks by take_cheeze
See All by take_cheeze
goluaをさわってみる
takecheeze
0
310
html5everをスクリプト言語から呼ぶ
takecheeze
0
210
mgemのCIを支える諸々
takecheeze
2
530
fukuoka.rb 祝 #100!
takecheeze
0
590
dep ensure浅掘り
takecheeze
0
390
LuaJIT as a Ruby backend
takecheeze
1
3.4k
Fukuoka Ruby Award 10th
takecheeze
1
250
コンパイル時計算への招待.pdf
takecheeze
1
1.3k
mrubyにとるRubyのシングルバイナリ運用
takecheeze
0
1.2k
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
Optimising Largest Contentful Paint
csswizardry
34
3.2k
The Cost Of JavaScript in 2023
addyosmani
48
7.6k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
320
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.3k
Documentation Writing (for coders)
carmenintech
69
4.7k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Transcript
Go 2のドラフトを読む ~エラー処理編~ by @take-cheeze
自己紹介 - 普段はRails書いておいります - Golangは、パッケージ管理がだるいときに書きます - フロントエンドではElmはいいぞって言って異端扱い
Golangの二大よく言われるやつ - Golang 2で改善される予定らしい - エラー処理だるい - interface{} のチェックがガバガバ(または多相型くれ) -
両方ざっくり読んでるけど、今回はエラー処理の方 - 今回は読書感想文なので気構えず - 公式ドキュメントやRFCは読むと楽しいのでおすすめ
タッチバーの正しい使い方 - https://twitter.com/NateTheFinch/status/899730215957561344 - タッチバー付きの機種持っていない - ルガーランスはちゃんと刺してから使いましょう
案の構成 1. 問題提起 a. 問題点 b. 他の言語での解決方法 2. 案 a.
checkキーワード b. handleキーワード c. 既定ハンドラー
現状のエラー処理の問題点 - 定型処理のくせに長い - `if err != nil { return
err }` を多値返却のエラー確認の度に書く - 更にgofmtすると3行になって、本来の処理より長くなることが - エラーチェックがけっこう漏れる - 戻り値のチェックをしなくても怒られない - エラーは基本的に全部して、必要のないものから除外する方が後々、楽
他の言語での例 - Rust - 関数型言語っぽい安全方向にふっている - エラー確認をしないと結果が取り出せない - Swift -
既存の例外処理っぽさがある( catchしないといけない) - 例外処理のめんどくさいところをだいぶなくしてる - バランスとってる感じ? - Rustに寄せようとしてるところも?
案 - 構文とキーワードが2つ追加 - エラー処理を記述する handle - エラー確認を展開する check -
`handle` が宣言されない場合のエラーハンドラー
handle文 - 例外処理でcatch文に書いていることを書く - エラーにスタック情報のメタデータを追加するときに利用 - 連鎖させることができる - 宣言順の逆順に実行(スタック構造) -
returnで先に宣言されたものを上書き可能 - 特に宣言のない場合、既定のに - ゼロ初期化の他の戻り値 - 最後の戻り値だけエラー返却
check式 - checkに続く式の最後の戻り値を判定する - foo(check bar())みたいな書き方も可能 - この場合、bar()の戻り値をチェックしてから foo()が呼ばれる -
書いてあった展開例がわかりやすい - 構文を見る限り、checkは単項演算子扱い - 更に単項演算子を重ねられる - *(check foo())みたいな逆参照を使う書き方をできる
雑感 - 短く書けるのは単純に嬉しい - handle文の連鎖ははまりそう - Rustのmatch式でreturnできるのやっぱりずるい - RAII的な処理が大変そうだけど -
コンパイラつよい - 暗黙のチェックがやはり弱そう(そうゆう言語なので
おまけ: Go 2 Draft Designs フィードバック会 - 9/27に日本でやっていたらしい - フィードバック結果を読んでも楽しかった
- エラー値&エラーハンドリング : http://bit.ly/go2-error-feedback-ja - ジェネリクス: http://bit.ly/go2-contracts-feedback-ja - 日本語で識者の意見を読めるのは有意義