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
プログラミング歴半年のRubyistがGoを学び始めて戸惑った点
Search
Sho Nagata
May 27, 2019
1
910
プログラミング歴半年のRubyistがGoを学び始めて戸惑った点
2019/5/27 Goあんこ LT大会 6kg での発表資料です。
Sho Nagata
May 27, 2019
Tweet
Share
More Decks by Sho Nagata
See All by Sho Nagata
30→150人のエンジニア組織拡大に伴うアジャイル文化を醸成する役割と取り組みの変化
nagata03
0
570
チームスローガンとその設計意図
nagata03
0
440
0→1フェーズのプロダクト開発のリアル
nagata03
0
280
スクラムマスターの悩みどころを赤裸々に告白します
nagata03
1
1.6k
SmartHRにおけるスクラムマスターへの道
nagata03
0
340
競技プログラミングにチャレンジ!
nagata03
0
410
1年間Rubyを使って印象的だったあれこれ
nagata03
0
440
Railsのコードを読んでみる vol.1
nagata03
0
410
コードを見る!書く!見てもらう!で爆速ステップアップ!!
nagata03
1
2.6k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Thoughts on Productivity
jonyablonski
69
4.6k
Making the Leap to Tech Lead
cromwellryan
133
9.3k
It's Worth the Effort
3n
184
28k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Fireside Chat
paigeccino
37
3.4k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
105
19k
Producing Creativity
orderedlist
PRO
344
40k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Transcript
ϓϩάϥϛϯάྺͷ Rubyist͕ GoΛֶͼ࢝Ίͯށͬͨ @nagata03
ࣗݾհ • Sho Nagata • όοΫΤϯυΤϯδχΞˏΧΧΫίϜ • ৯ϩάͷϚΠΫϩαʔϏεԽΛਪਐத • Ruby
/ Railsʢྺ9ϲ݄ʣ • GoΛֶͼ࢝Ίͯ3ϲ݄ • ͖ͳݴޠPython ˏs_naga03 Sho Nagata nagata03
ʹͳΓ͍ͨ ͕͖ͳ ist
GoΛֶͼ࢝Ίͯށͬͨ͜ͱ 1. ྫ֎ػߏ͕ͳ͍ 2. ΠϯλϑΣʔεͬͯͳΜͧʁ
1. ྫ֎ػߏ͕ͳ͍ • Goʹྫ֎ػߏ͕ͳ͍ʢRubyͰݴ͏ begin~rescue~end ͕ͳ͍ʣ • ؔෳͷΓΛฦ͢Α͏ఆٛ • Τϥʔ༰ΛׂΓͯΔerrorܕͷมΛฦ͢Α͏ʹ͢Δ
• ؔͷΓͰΤϥʔ͕ൃੜ͔ͨ͠Ͳ͏͔Λࣔ͢
1. ྫ֎ػߏ͕ͳ͍ • ؔΛݺͼग़͢͝ͱʹifจͰΤϥʔఆ • ͘Ͳ͍ʁ • idiomԽͯͯ͠γϯϓϧ • ελοΫτϨʔεऔΕͳ͍
• pkg/errorsύοέʔδΛ͑ελοΫτϨʔεऔΕΔʂ͚Ͳ… • osύοέʔδͷOpenؔ • 2ͭͷΓerrorܕ
1. ྫ֎ػߏ͕ͳ͍ Ҿ༻ɿeurekaϒϩάʮGoݴޠʹ͓͚ΔΤϥʔϋϯυϦϯάΛࠓҰৼΓฦΔʯ
2. ΠϯλϑΣʔεͬͯͳΜͧʁ • ܕͷҰछ • ܕͷॊೈੑΛ୲อ͢Δ • ʮͲͷΑ͏ͳϝιουΛ࣮͢Δ͖͔ʯΛنఆ
3. ΠϯλϑΣʔεͬͯͳΜͧʁ errorΠϯλϑΣʔεΛ࣮͢Δʹ stringܕͷมΛฦ͢Error()ϝιουΛ࣮͢Εྑ͍ MyErrorܕʹerrorΠϯλϑΣʔεΛ࣮ MyErrorܕerrorܕͱͯ͠ѻ͑Δ ߏମͷMyErrorܕΛఆٛ
3. ΠϯλϑΣʔεͬͯͳΜͧʁ fmtύοέʔδfmt.StringerΠϯλϑΣʔεΛ࣮ͨ͠ܕͰ͋Ε Stringϝιου͕ฦ͢จࣈྻΛग़ྗʹ༻ͯ͘͠ΕΔɻ https://github.com/golang/go/blob/master/src/fmt/print.go Tܕʹfmt.StringerΠϯλϑΣʔεΛ࣮
2. ΠϯλϑΣʔεͬͯͳΜͧʁ • interface{}ܕ͋ΒΏΔܕͱޓੑΛ࣋ͭʁ - ͋ΒΏΔܕinterface{}ܕͱͯ͠ѻ͑Δ - ͦͷٯΓཱͨͳ͍
2. ΠϯλϑΣʔεͬͯͳΜͧʁ • ͋Δܕ͕ͲͷΠϯλϑΣʔεΛ࣮͍ͯ͠Δ͔͙͢Θ͔ Δͷʁ - godocίϚϯυʁ - go/typesύοέʔδʁ
·ͱΊ • Goʹྫ֎ػߏ͕ͳ͍ - ྫ֎ػߏ͕ͳͯ͘͘͢͝ࠔΔʂͱ͍͏͜ͱͳͦ͞͏ - ࣮ࡍGoΛ͍ͬͯΔαʔϏεͰͲͷΑ͏ʹΤϥʔϋϯυϦϯάͯ͠ ͍Δͷ͔Γ͍ͨ • ΠϯλϑΣʔεΛ͏͜ͱͰܕΛॊೈʹѻ͑Δ
- ͍ํΛݟ͍ͯΔ͏ͪʹҿΈࠐΊͯ͘Δ - ͲͷΠϯλϑΣʔεΛ࣮͍ͯ͠Δͷ͔Ͳ͏ͬͯௐΔʁ
ࢀߟจݙ • ॻ੶ - ʮελʔςΟϯάGoݴޠʯ • eurekaϒϩά - ʮGoݴޠʹ͓͚ΔΤϥʔϋϯυϦϯάΛࠓҰৼΓฦΔʯ •
Qiita - ʮΠϯλϑΣʔεͷ࣮ύλʔϯ #golangʯ@tenntenn • GitHub - ʮgo/golang ϦϙδτϦʯ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ