Save 37% off PRO during our Black Friday Sale! »

プログラミング歴半年のRubyistがGoを学び始めて戸惑った点

C394e5ce0bb316248a740a7c99f02475?s=47 Sho Nagata
May 27, 2019
440

 プログラミング歴半年のRubyistがGoを学び始めて戸惑った点

2019/5/27 Goあんこ LT大会 6kg での発表資料です。

C394e5ce0bb316248a740a7c99f02475?s=128

Sho Nagata

May 27, 2019
Tweet

Transcript

  1. ϓϩάϥϛϯάྺ൒೥ͷ Rubyist͕ GoΛֶͼ࢝Ίͯށ࿭ͬͨ఺ @nagata03

  2. ࣗݾ঺հ • Sho Nagata • όοΫΤϯυΤϯδχΞˏΧΧΫίϜ • ৯΂ϩάͷϚΠΫϩαʔϏεԽΛਪਐத • Ruby

    / Railsʢྺ͸9ϲ݄ʣ • GoΛֶͼ࢝Ίͯ3ϲ݄ • ޷͖ͳݴޠ͸Python ˏs_naga03 Sho Nagata nagata03
  3. ʹͳΓ͍ͨ ͕޷͖ͳ ist

  4. GoΛֶͼ࢝Ίͯށ࿭ͬͨ͜ͱ 1. ྫ֎ػߏ͕ͳ͍ 2. ΠϯλϑΣʔεͬͯͳΜͧʁ

  5. 1. ྫ֎ػߏ͕ͳ͍ • Goʹ͸ྫ֎ػߏ͕ͳ͍ʢRubyͰݴ͏ begin~rescue~end ͕ͳ͍ʣ • ؔ਺͸ෳ਺ͷ໭Γ஋Λฦ͢Α͏ఆٛ • Τϥʔ಺༰ΛׂΓ౰ͯΔerrorܕͷม਺Λฦ͢Α͏ʹ͢Δ

    • ؔ਺ͷ໭Γ஋ͰΤϥʔ͕ൃੜ͔ͨ͠Ͳ͏͔Λࣔ͢
  6. 1. ྫ֎ػߏ͕ͳ͍ • ؔ਺Λݺͼग़͢͝ͱʹifจͰΤϥʔ൑ఆ • ͘Ͳ͍ʁ • idiomԽͯͯ͠γϯϓϧ • ελοΫτϨʔεऔΕͳ͍

    • pkg/errorsύοέʔδΛ࢖͑͹ελοΫτϨʔεऔΕΔʂ͚Ͳ… • osύοέʔδͷOpenؔ਺ • 2ͭ໨ͷ໭Γ஋͸errorܕ
  7. 1. ྫ֎ػߏ͕ͳ͍ Ҿ༻ɿeurekaϒϩάʮGoݴޠʹ͓͚ΔΤϥʔϋϯυϦϯάΛࠓҰ౓ৼΓฦΔʯ

  8. 2. ΠϯλϑΣʔεͬͯͳΜͧʁ • ܕͷҰछ • ܕͷॊೈੑΛ୲อ͢Δ • ʮͲͷΑ͏ͳϝιουΛ࣮૷͢Δ΂͖͔ʯΛنఆ

  9. 3. ΠϯλϑΣʔεͬͯͳΜͧʁ errorΠϯλϑΣʔεΛ࣮૷͢Δʹ͸ stringܕͷม਺Λฦ͢Error()ϝιουΛ࣮૷͢Ε͹ྑ͍ MyErrorܕʹerrorΠϯλϑΣʔεΛ࣮૷ MyErrorܕ͸errorܕͱͯ͠ѻ͑Δ ߏ଄ମͷMyErrorܕΛఆٛ

  10. 3. ΠϯλϑΣʔεͬͯͳΜͧʁ fmtύοέʔδ͸fmt.StringerΠϯλϑΣʔεΛ࣮૷ͨ͠ܕͰ͋Ε͹ Stringϝιου͕ฦ͢จࣈྻΛग़ྗʹ࢖༻ͯ͘͠ΕΔɻ https://github.com/golang/go/blob/master/src/fmt/print.go Tܕʹfmt.StringerΠϯλϑΣʔεΛ࣮૷

  11. 2. ΠϯλϑΣʔεͬͯͳΜͧʁ • interface{}ܕ͸͋ΒΏΔܕͱޓ׵ੑΛ࣋ͭʁ - ͋ΒΏΔܕ͸interface{}ܕͱͯ͠ѻ͑Δ - ͦͷٯ͸੒Γཱͨͳ͍

  12. 2. ΠϯλϑΣʔεͬͯͳΜͧʁ • ͋Δܕ͕ͲͷΠϯλϑΣʔεΛ࣮૷͍ͯ͠Δ͔͸͙͢Θ͔ Δͷʁ - godocίϚϯυʁ - go/typesύοέʔδʁ

  13. ·ͱΊ • Goʹ͸ྫ֎ػߏ͕ͳ͍ - ྫ֎ػߏ͕ͳͯ͘͘͢͝ࠔΔʂͱ͍͏͜ͱ͸ͳͦ͞͏ - ࣮ࡍGoΛ࢖͍ͬͯΔαʔϏεͰ͸ͲͷΑ͏ʹΤϥʔϋϯυϦϯάͯ͠ ͍Δͷ͔஌Γ͍ͨ • ΠϯλϑΣʔεΛ࢖͏͜ͱͰܕΛॊೈʹѻ͑Δ

    - ࢖͍ํΛݟ͍ͯΔ͏ͪʹҿΈࠐΊͯ͘Δ - ͲͷΠϯλϑΣʔεΛ࣮૷͍ͯ͠Δͷ͔͸Ͳ͏΍ͬͯௐ΂Δʁ
  14. ࢀߟจݙ • ॻ੶ - ʮελʔςΟϯάGoݴޠʯ • eurekaϒϩά - ʮGoݴޠʹ͓͚ΔΤϥʔϋϯυϦϯάΛࠓҰ౓ৼΓฦΔʯ •

    Qiita - ʮΠϯλϑΣʔεͷ࣮૷ύλʔϯ #golangʯ@tenntenn • GitHub - ʮgo/golang ϦϙδτϦʯ
  15. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ