Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Go_2のドラフトを読む__エラー編_.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
take_cheeze
October 04, 2018
1.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Go_2のドラフトを読む__エラー編_.pdf
take_cheeze
October 04, 2018
More Decks by take_cheeze
See All by take_cheeze
goluaをさわってみる
takecheeze
0
410
html5everをスクリプト言語から呼ぶ
takecheeze
0
280
mgemのCIを支える諸々
takecheeze
2
580
fukuoka.rb 祝 #100!
takecheeze
0
700
dep ensure浅掘り
takecheeze
0
470
LuaJIT as a Ruby backend
takecheeze
1
3.8k
Fukuoka Ruby Award 10th
takecheeze
1
290
コンパイル時計算への招待.pdf
takecheeze
1
1.5k
mrubyにとるRubyのシングルバイナリ運用
takecheeze
0
1.4k
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Abbi's Birthday
coloredviolet
4
10k
Believing is Seeing
oripsolob
1
220
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
Between Models and Reality
mayunak
4
460
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
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 - 日本語で識者の意見を読めるのは有意義