Upgrade to Pro — share decks privately, control downloads, hide ads and more …

僕がGoを選ぶ理由

Koki Natsume
September 23, 2018

 僕がGoを選ぶ理由

Student Go #1 ビギナーズセッション 2 の発表資料です。
僕のGoの好きなところをまとめました。

Koki Natsume

September 23, 2018
Tweet

More Decks by Koki Natsume

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ ϋϯυϧωʔϜ: natumn/natumndb ֶߍ: ձ௡େֶ ֶ෦3೥ੜ GoͰ΍͍ͬͯΔ͜ͱ: • GAE/Go ʹΑΔαʔόʔαΠυͷ։ൃ

    (ΞϧόΠτ) • CLI, slack botͳͲπʔϧ܈ͷ։ൃ (झຯ) • ֶ಺޲͚ݕࡧΤϯδϯweb-int-searcherͷ։ൃ (େֶͰͷ׆ಈ) • etc…
  2. • खଓ͖ܕͱඇಉظϓϩάϥϛϯά, LLݴޠͷΑ͏ͳ؆୯͞, ੩తܕ෇͚Λ ߹ΘͤͨσβΠϯ • ։ൃऀͷબ୒ࢶΛڱΊΔγϯϓϧͳจ๏, ॻ͖ํͷ౷Ұ • ϥΠϒϥϦɺϑΥʔϚολ,

    Ϧϯλ, ࣗಈੜ੒ͳͲπʔϧͷඪ४αϙʔτ Ͱॆ࣮ͤ͞Δ • γϯάϧόΠφϦ ͦͷղܾࡦͱͯ͠ͷGo ͳͥ(P͸ͭ͘ΒΕͨͷ͔
  3. • खଓ͖ܕͱඇಉظϓϩάϥϛϯά, LLݴޠͷΑ͏ͳ؆୯͞, ੩తܕ෇͚Λ ߹ΘͤͨσβΠϯ • ։ൃऀͷબ୒ࢶΛڱΊΔγϯϓϧͳจ๏, ॻ͖ํͷ౷Ұ • ϥΠϒϥϦɺϑΥʔϚολ,

    Ϧϯλ, ࣗಈੜ੒ͳͲπʔϧͷඪ४αϙʔτ Ͱॆ࣮ͤ͞Δ • γϯάϧόΠφϦ ͦͷղܾࡦͱͯ͠ͷGo ͳͥ(P͸ͭ͘ΒΕͨͷ͔ γεςϜͷεέʔϥϏϦςΟ ։ൃͷεέʔϥϏϦςΟ
  4. • ྫ͑͹ɺϊϯϒϩοΩϯάIOͳͲͷ଴ͪঢ়ଶ͕ൃੜ͢Δͱ ผͳGroutine͕ಈ͖ग़͢ खଓ͖ͱඇಉظϓϩάϥϛϯάΛ߹ΘͤͨσβΠϯ ͳͥ(P͸ͭ͘ΒΕͨͷ͔ . ( 1 ( (

    running! waiting… ࢀߟਤ: GopherCon 2017: Kavya Joshi - Understanding Channels جຊతʹ։ൃऀ͕ͦ͜Λ ҙࣝ͠ͳͯ͘΋ Runtime͕উखʹඇಉظ ϓϩάϥϛϯάͯ͘͠ΕΔ!!!
  5. • map΍filterͳ͠ͷforจʹΑΔ൓෮ॲཧ • ྫ֎ػߏͳ͠ͷ໌ࣔతͳΤϥʔϋϯυϦϯά • goͱ͔͚ͩ͘ฒྻॲཧ͕Մೳ • interfaceʹΑΔந৅Խ, ίϯϙδοτͷ࣮ݱ •

    ։ൃऀ͕ϝϞϦ؅ཧͤͣʹ͢ΉGC͕͋Δ γϯϓϧͳจ๏ ͳͥ(P͸ͭ͘ΒΕͨͷ͔ ։ൃऀ͕ॻ͚Δදݱ͕େମܾ·ͬͯ͘Δ
  6. (PΛֶͿ The bigger the interface, the weaker the abstraction. •

    ioύοέʔδ Errors are values. Don’t just check errors, handle them gracefully. Don’t panic. • ύοέʔδͷ֤ॴ ྫ
  7. ੜ࢈ੑΛ͋͛ΔͨΊʹ goίϚϯυ • Ϗϧυ • ςετ • όΠφϦͷऔಘ • ґଘؔ܎ͷ؅ཧʢv1.11͔Β)

    • ϑΥʔϚολͳͲͷίʔυ੔ܗ • ܭଌπʔϧ • ίϯύΠϧ࣌ͷπʔϧ܈
  8. ੜ࢈ੑΛ͋͛ΔͨΊʹ ࣗಈੜ੒ • go generate • Test: gotests • Mock:

    gomock, mockgen command • API: go-swagger, swaggo