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
960
プログラミング歴半年の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
800
チームスローガンとその設計意図
nagata03
0
460
0→1フェーズのプロダクト開発のリアル
nagata03
0
300
スクラムマスターの悩みどころを赤裸々に告白します
nagata03
1
1.8k
SmartHRにおけるスクラムマスターへの道
nagata03
0
400
競技プログラミングにチャレンジ!
nagata03
0
440
1年間Rubyを使って印象的だったあれこれ
nagata03
0
470
Railsのコードを読んでみる vol.1
nagata03
0
450
コードを見る!書く!見てもらう!で爆速ステップアップ!!
nagata03
1
2.7k
Featured
See All Featured
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Site-Speed That Sticks
csswizardry
13
1.1k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
170
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
Technical Leadership for Architectural Decision Making
baasie
1
240
Side Projects
sachag
455
43k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
67
Faster Mobile Websites
deanohume
310
31k
Optimizing for Happiness
mojombo
379
71k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
80
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
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 ϦϙδτϦʯ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ