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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Sho Nagata
May 27, 2019
980
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
プログラミング歴半年のRubyistがGoを学び始めて戸惑った点
2019/5/27 Goあんこ LT大会 6kg での発表資料です。
Sho Nagata
May 27, 2019
More Decks by Sho Nagata
See All by Sho Nagata
速く作れるかではなく、速く学べるか ― 学習ループを回すパイロットの途中報告
nagata03
0
570
30→150人のエンジニア組織拡大に伴うアジャイル文化を醸成する役割と取り組みの変化
nagata03
0
970
チームスローガンとその設計意図
nagata03
0
490
0→1フェーズのプロダクト開発のリアル
nagata03
0
320
スクラムマスターの悩みどころを赤裸々に告白します
nagata03
1
1.9k
SmartHRにおけるスクラムマスターへの道
nagata03
0
430
競技プログラミングにチャレンジ!
nagata03
0
470
1年間Rubyを使って印象的だったあれこれ
nagata03
0
490
Railsのコードを読んでみる vol.1
nagata03
0
480
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
980
Designing for Performance
lara
611
70k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
180
The Cult of Friendly URLs
andyhume
79
7k
Technical Leadership for Architectural Decision Making
baasie
3
450
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 ϦϙδτϦʯ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ