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

EngineerX.go#2 - A Tour of Goで一緒にGo入門 : メソッドとインタフェース編 -

8d9794e442b5dabc1d40b3a013fae53b?s=47 Fumi
October 26, 2019

EngineerX.go#2 - A Tour of Goで一緒にGo入門 : メソッドとインタフェース編 -

# イベント
EngineerX.go#2
A Tour of Goで一緒にGo入門とNISAのお話
https://engineerx-go.connpass.com/event/151437/

## イベント概要
合同会社TsujiTechが主催するEngineerXは、『エンジニア×異種業界 の勉強会』を開催しているグループです。
ここでのエンジニアとは、技術を使ってモノを作り出す方を指し、異種業界はそれ以外の活動をしている方を指します。
私たちは、「エンジニアが世界を創る」と意識し、エンジニアに成長・活躍する場を提供します。
本勉強会を通して、技術の向上だけでなく、新しいサービスが生まれたり、開発の仲間を見つけたり、独立・副業をする際に気になるお金の話や法律の話などを聞ける士業をされている方と交流したりできるようにしたいと考えています。

その中でGoの勉強会に特化したのがEngineerX.goです。
一緒にGoを勉強して、Gophersとして確かな力をつけるのが目的です。

# 概要
今回は「A Tour of Go」を通してGoに入門しよう!っという内容です。
「A Tour of Go」の基本構文を取り扱いました。

8d9794e442b5dabc1d40b3a013fae53b?s=128

Fumi

October 26, 2019
Tweet

Transcript

  1. A T O U R O F G O Ұ

    ॹ ʹ ( 0 ͷ ੈ ք Λ ๯ ݥ ͠ Α ͏ ʂ EngineerX.go #2 5IF(PQIFSDIBSBDUFSJTCBTFEPOUIF(PNBTDPUEFTJHOFECZ3FOÉF'SFODI
  2. GoͬͯͲΜͳݴޠʁ

  3. ABOUT GO Go͸ɺγϯϓϧͰ৴པੑͷߴ͍ޮ཰తͳιϑτ΢ΣΞΛ ؆୯ʹߏஙͰ͖ΔΦʔϓϯιʔεͷϓϩάϥϛϯάݴޠͰ͢ɻ (By https://golang.org/)

  4. GoͷੈքΛཱྀ͠Α͏ʂ A TOUR OF GO

  5. • جຊߏจ – ύοέʔδɺม਺ɺؔ਺ – ੍ޚจɿGPS JG FMTF TXJUDI EFGFS

    – ͦͷଞͷܕɿTUSVDU TMJDFT NBQT • ϝιουͱΠϯλϑΣʔε – ϝιουͱΠϯλϑΣʔε • ฒߦੑ – ฒߦੑ A TOUR OF GO ҰॹʹGOͷੈքΛ๯ݥ͠Α͏ʂ "5PVSPG(Pͷߏ੒
  6. • جຊߏจ – ύοέʔδɺม਺ɺؔ਺ – ੍ޚจɿGPS JG FMTF TXJUDI EFGFS

    – ͦͷଞͷܕɿTUSVDU TMJDFT NBQT • ϝιουͱΠϯλϑΣʔε – ϝιουͱΠϯλϑΣʔε • ฒߦੑ – ฒߦੑ A TOUR OF GO ҰॹʹGOͷੈքΛ๯ݥ͠Α͏ʂ લ ճ · Ͱ ͷ ൣ ғ "5PVSPG(Pͷߏ੒
  7. • جຊߏจ – ύοέʔδɺม਺ɺؔ਺ – ੍ޚจɿGPS JG FMTF TXJUDI EFGFS

    – ͦͷଞͷܕɿTUSVDU TMJDFT NBQT • ϝιουͱΠϯλϑΣʔε – ϝιουͱΠϯλϑΣʔε • ฒߦੑ – ฒߦੑ A TOUR OF GO ҰॹʹGOͷੈքΛ๯ݥ͠Α͏ʂ ຊ ೔ ͷ ൣ ғ "5PVSPG(Pͷߏ੒
  8. લճ·Ͱͷ෮श ˍ ࣭໰λΠϜ

  9. 1BDLBHF WBSJBCMFT BOEGVODUJPOT 1BDLBHFT *NQPSUT &YQPSUFEOBNFT 'VODUJPOT 'VODUJPOTDPOUJOVFE .VMUJQMFSFTVMUT /BNFESFUVSOWBMVFT

    7BSJBCMFT 7BSJBCMFTXJUIJOJUJBMJ[FST 4IPSUWBSJBCMFEFDMBSBUJPOT #BTJDUZQFT ;FSPWBMVFT 5ZQFDPOWFSTJPOT 5ZQFJOGFSFODF $POTUBOUT /VNFSJD$POTUBOT લճ·Ͱͷൣғ Gopher Artwork by Ashley McNamara
  10. 'MPXDPOUSPMTUBUFNFOUT GPS JG FMTF TXJUDIBOEEFGFS 'PS 'PSDPOUJOVFE 'PSJT(P`TlXIJMFz 'PSFWFS *G

    *GXJUIBTIPSUTUBUFNFOU *GBOEFMTF 4XJUDI 4XJUDIFWBMVBUJPOPSEFS 4XJUDIXJUIOPDPOEJUJPO %FGFS 4UBDLJOHEFGFST લճ·Ͱͷൣғ Gopher Artwork by Ashley McNamara
  11. .PSFUZQFT TUSVDUT TMJDFT BOENBQT 1PJOUFST 4USVDUT 4USVDU'JFMET 1PJOUFSTUPTUSVDUT 4USVDU-JUFSBMT "SSBZT

    4MJDFT 4MJDFTBSFMJLFSFGFSFODFTUPBSSBZT 4MJDFTMJUFSBMT 4MJDFTEFGBVMUT 4MJDFTMFOHUI /JMTMJDFT $SFBUJOHBTMJDFXJUINBLF 4MJDFTPGTMJDFT "QQFOEJOHUPBTMJDF 3BOHF 3BOHFDPOUJOVFE .BQT .BQMJUFSBMT .BQMJUFSBMTDPOUJOVFE .VUBUJOH.BQT 'VODUJPOWBMVFT 'VODUJPODMPTVSFT લճ·Ͱͷൣғ Gopher Artwork by Ashley McNamara
  12. 休 憩 タ イ ム

  13. ϝιουͱΠϯλϑΣʔε
 


  14. METHODS ܕʹϝιου NFUIPE Λ ఆٛ͢Δ͜ͱ͕Ͱ͖Δ

  15. METHODS ܕʹϝιου NFUIPE Λ ఆٛ͢Δ͜ͱ͕Ͱ͖Δ ϝιου NFUIPE ͸ ϨγʔόҾ਺Λ࣋ͭؔ਺ GVODUJPO

  16. METHODS ϨγʔόʢSFDFJWFS Ҿ਺ ܕʹϝιου NFUIPE Λ ఆٛ͢Δ͜ͱ͕Ͱ͖Δ ϝιου NFUIPE ͸

    ϨγʔόҾ਺Λ࣋ͭؔ਺ GVODUJPO
  17. METHODS ARE FUNCTIONS ࠓճͷ"CTͷΑ͏ͳϝιουͰ͋Ε͹ɺ ؔ਺Ͱදݱͯ͠΋࢖͍উख͸มΘΒͳ͍

  18. METHODS CONTINUED ߏ଄ମ TUSVDU Ͱ͸ͳ͍ܕͰ΋ ϝιουΛఆٛͰ͖Δ

  19. METHODS CONTINUED ߏ଄ମ TUSVDU Ͱ͸ͳ͍ܕͰ΋ ϝιουΛఆٛͰ͖Δ ϝιου͸ɺ ϝιουͱಉ͡ύοέʔδͰ ܕ͕ఆٛ͞Ε͍ͯΔϨγʔόʔͰͷΈఆٛͰ͖Δ ܕ͕ผͷύοέʔδʢJOUͳͲͷ૊ΈࠐΈܕΛؚΉʣͰ

    ఆٛ͞Ε͍ͯΔϨγʔόʔͰ ϝιουΛએݴ͢Δ͜ͱ͸Ͱ͖ͳ͍
  20. METHODS CONTINUED ܕ͕ผͷύοέʔδʢJOUͳͲͷ૊ΈࠐΈܕΛؚΉʣͰఆٛ͞Ε͍ͯΔ ϨγʔόʔͰϝιουΛఆٛ͢Δͱʜ

  21. METHODS CONTINUED ৽͘͠UZQFએݴ͢Δ

  22. POINTER RECEIVERS ϙΠϯλʔͷϨγʔόΛ࣋ͭ ϝιου΋ఆٛͰ͖Δ

  23. POINTER AND FUNCTIONS ϝιουΛఆٛͨ͠৔߹ ؔ਺Ͱఆٛͨ͠৔߹ ΞυϨεԋࢉࢠ  Λ࢖͏

  24. METHODS AND POINTER INDIRECTION (1) ؒ઀ࢀর

  25. METHODS AND POINTER INDIRECTION (2)

  26. ग़ྗ݁Ռ ऄ଍ ஋ϨγʔόͱϙΠϯλϨγʔόͷҧ͍ ஋ ΞυϨε

  27. CHOOSING A VALUE OR POINTER RECEIVER ϙΠϯλϨγʔόͷϝϦοτ ᶃ ϝιου͕Ϩγʔό͕ࢦ͢஋Λ มߋ͢Δ͜ͱ͕Ͱ͖Δ͜ͱ

    ᶄ ؔ਺ΛݺͿ͝ͱʹ ஋ͷίϐʔ͕ൃੜ͢ΔͷΛ ආ͚Δ͜ͱ͕Ͱ͖Δ͜ͱ
  28. 休 憩 タ イ ム

  29. ϝιουͱΠϯλϑΣʔε
 


  30. INTERFACES JOUFSGBDF\ "CT GMPBU ^ ϝιουηοτ "CTϝιου΁ͷΠϯλϑΣʔε

  31. INTERFACES JOUFSGBDFܕͷྫ ಉ͡ϝιουηοτ͸ࢦఆͰ͖ͳ͍ ϒϥϯΫࣝผࢠ @ ͸࢖͑ͳ͍ ༷ʑͳϝιουηοτΛࢦఆͰ͖Δ Կ΋ࢦఆ͠ͳ͍ͷ΋ۭͷJOUFSGBDF΋Մೳ Ҿ༻ɿhttps://golang.org/ref/spec#Interface_types

  32. INTERFACES ARE IMPLEMENTED IMPLICITLY ͜ͷϝιου͸5ܕ͸ JOUFSGBDF*Λ࣮૷͍ͯ͠Δ͜ͱ Λҙຯ͍ͯ͠Δ ͔͠͠ɺ࣮૷͍ͯ͠Δ͜ͱΛ ໌ࣔతʹએݴ͢Δඞཁ͕ͳ͍

  33. INTERFACES ARE IMPLEMENTED IMPLICITLY ͜ͷϝιου͸5ܕ͸ JOUFSGBDF*Λ࣮૷͍ͯ͠Δ͜ͱ Λҙຯ͍ͯ͠Δ ͔͠͠ɺ࣮૷͍ͯ͠Δ͜ͱΛ ໌ࣔతʹએݴ͢Δඞཁ͕ͳ͍ OBNFTQBDF4BNQMF\

    JOUFSGBDF*\ WPJE.  ^  DMBTT5*\ QVCMJDWPJE. \ ^ ^ ^ $ $Ͱ͸ 5Ϋϥε͸JOUFSGBDF*Λ ࣮૷͍ͯ͠Δ͜ͱΛ ໌ࣔతʹએݴ͍ͯ͠Δ ଞݴޠͱͷൺֱ
  34. INTERFACE VALUES ग़ ྗ ݁ Ռ ˠ5ܕͷ.ϝιουΛݺͼग़͢ ˠ'ܕͷ.ϝιουΛݺͼग़͢ JOUFSGBDF஋͸ɺ ஋ͱ۩৅ܕͷλϓϧ

    ͱߟ͑Δ͜ͱ͕Ͱ͖Δ
  35. INTERFACE VALUES WITH NIL UNDERLYING VALUES ˠOJM ग़ ྗ ݁

    Ռ
  36. INTERFACE VALUES WITH NIL UNDERLYING VALUES ˠOJM ˠ5ϙΠϯλܕͷ ɹ.ϝιουΛݺͼग़͢ ग़

    ྗ ݁ Ռ
  37. INTERFACE VALUES WITH NIL UNDERLYING VALUES ˠOJM ˠ5ϙΠϯλܕͷ ɹ.ϝιουΛݺͼग़͢ U͸OJMͷͨΊɺ

    .ϝιουͷϨγʔό͸ OJMͱͳΔ ग़ ྗ ݁ Ռ
  38. INTERFACE VALUES WITH NIL UNDERLYING VALUES ˠOJM ˠ5ϙΠϯλܕͷ ɹ.ϝιουΛݺͼग़͢ U͸OJMͷͨΊɺ

    .ϝιουͷϨγʔό͸ OJMͱͳΔ ग़ ྗ ݁ Ռ OJMϨγʔόͰݺͼग़͞ΕΔ͜ͱ Λద੾ʹॲཧ͍ͯ͠Δ
  39. ग़ ྗ ݁ Ռ NIL INTERFACE VALUES JOUFSGBDFܕͷ ॳظԽ͞Ε͍ͯͳ͍ม਺ͷ஋͸OJMͰ͋Δ ͜ͷม਺͸ɺ·ͩ஋΋۩৅ܕ΋อ࣋͠ͳ͍

    ͜ͷ··ͰϝιουΛݺͼग़͢ͱɺ Ͳͷ۩ମతͳϝιουΛݺͼग़͔͢Λࣔ͢ܕ৘ใ͕ JOUFSGBDFλϓϧ಺ʹͳ͍ͨΊɺ࣮ߦ࣌ΤϥʔʹͳΔ
  40. THE EMPTY INTERFACE ۭͷJOUFSGBDF

  41. THE EMPTY INTERFACE ۭͷJOUFSGBDF ϝιουηοτΛ࣋ͨͳ͍

  42. THE EMPTY INTERFACE ۭͷJOUFSGBDF ϝιουηοτΛ࣋ͨͳ͍ ೚ҙͷλΠϓͷ஋Λอ࣋Ͱ͖Δ

  43. TYPE ASSERTIONS ܕΞαʔγϣϯ͸ɺ JOUFSGBDF஋ͷجૅͱͳΔ ۩ମతͳ஋΁ͷΞΫηεΛఏڙ͢Δ

  44. TYPE ASSERTIONS ܕΞαʔγϣϯ͸ɺ JOUFSGBDF஋ͷجૅͱͳΔ ۩ମతͳ஋΁ͷΞΫηεΛఏڙ͢Δ JOUFSGBDF஋J͕۩৅ܕ5Λอ࣋͠ɺ جʹͳΔ5஋Λม਺UʹׂΓ౰ͯΔ͜ͱΛ ද໌͍ͯ͠Δ ग़ྗ݁Ռ

  45. TYPE ASSERTIONS ܕΞαʔγϣϯ͸ɺ JOUFSGBDF஋ͷجૅͱͳΔ ۩ମతͳ஋΁ͷΞΫηεΛఏڙ͢Δ ग़ྗ݁Ռ J͕5Λอ͍࣋ͯ͠ͳ͍৔߹͸ɺ QBOJD͕ൃੜ͢Δ

  46. TYPE ASSERTIONS ܕΞαʔγϣϯ͸ɺ JOUFSGBDF஋ͷجૅͱͳΔ ۩ମతͳ஋΁ͷΞΫηεΛఏڙ͢Δ JOUFSGBDF஋͕ಛఆͷܕΛอ͍࣋ͯ͠Δ͔Ͳ͏͔Λςετ͢ΔͨΊʹɺ ܕΞαʔγϣϯ͸ҎԼͷͭͷ஋Λฦ͢ ɾجͱͳΔ஋ ɾΞαʔγϣϯ͕੒ޭ͔ͨ͠Ͳ͏͔Λใࠂ͢ΔCPPM஋

  47. TYPE ASSERTIONS ܕΞαʔγϣϯ͸ɺ JOUFSGBDF஋ͷجૅͱͳΔ ۩ମతͳ஋΁ͷΞΫηεΛఏڙ͢Δ JOUFSGBDF஋͕ಛఆͷܕΛอ͍࣋ͯ͠Δ͔Ͳ͏͔Λςετ͢ΔͨΊʹɺ ܕΞαʔγϣϯ͸ҎԼͷͭͷ஋Λฦ͢ ɾجͱͳΔ஋ ɾΞαʔγϣϯ͕੒ޭ͔ͨ͠Ͳ͏͔Λใࠂ͢ΔCPPM஋ ग़ྗ݁Ռ

    J͕5Λอ͍࣋ͯ͠Δ৔߹ɺ U͸جʹͳΔ஋ͱͳΓɺPL͸USVFʹͳΔ
  48. TYPE ASSERTIONS ܕΞαʔγϣϯ͸ɺ JOUFSGBDF஋ͷجૅͱͳΔ ۩ମతͳ஋΁ͷΞΫηεΛఏڙ͢Δ JOUFSGBDF஋͕ಛఆͷܕΛอ͍࣋ͯ͠Δ͔Ͳ͏͔Λςετ͢ΔͨΊʹɺ ܕΞαʔγϣϯ͸ҎԼͷͭͷ஋Λฦ͢ ɾجͱͳΔ஋ ɾΞαʔγϣϯ͕੒ޭ͔ͨ͠Ͳ͏͔Λใࠂ͢ΔCPPM஋ ग़ྗ݁Ռ

    J͕5Λอ͍࣋ͯ͠ͳ͍৔߹ɺ U͸5ܕͷθϩ஋ͱͳΓɺPL͸GBMTFʹͳΔ QBOJD͸ى͖ͳ͍
  49. TYPE SWITCHES ۭͷJOUFSGBDF͸ܕ৘ใ͕গͳ͍

  50. TYPE SWITCHES ۭͷJOUFSGBDF͸ܕ৘ใ͕গͳ͍ ܕΞαʔγϣϯͱTXJUDIจΛ࢖ͬͯ ܕ͝ͱͷॲཧΛߦ͑Δ

  51. ϝιουͱΠϯλϑΣʔε
 ΠϯλϑΣʔεͷྫ


  52. STRINGERS ࠷΋ҰൠతͳJOUFSGBDFͷͭ͸ɺ GNUύοέʔδͰఆٛ͞Εͨ4USJOHFS 4USJOHFS͸ɺ ͦΕࣗମΛจࣈྻͱͯ͠ هड़͢Δ͜ͱ͕Ͱ͖ΔܕͰ͋Δ GNUύοέʔδʢ͓Αͼଞͷଟ͘ʣ͸ɺ ஋Λग़ྗ͢ΔͨΊʹ͜ͷJOUFSGBDFΛ୳͢

  53. ERRORS (PͷϓϩάϥϜͰ͸ Τϥʔঢ়ଶΛFSSPS஋Ͱද͢ FSSPSܕ͸ ૊ࠐ CVJMUJO JOUFSGBDFͰ GNU4USJOHFSʹܗ͕ࣅ͍ͯΔ ༨ஊɿ GNU4USJOHFSಉ༷ʹɺ

    GNUύοέʔδ͸ɺ ஋Λग़ྗ͢Δ࣌FSSPSJOUFSGBDFΛ୳͢
  54. ERRORS (PͷϓϩάϥϜͰ͸ Τϥʔঢ়ଶΛFSSPS஋Ͱද͢ FSSPSܕ͸ ૊ࠐ CVJMUJO JOUFSGBDFͰ GNU4USJOHFSʹܗ͕ࣅ͍ͯΔ ༨ஊɿ GNU4USJOHFSಉ༷ʹɺ

    GNUύοέʔδ͸ɺ ஋Λग़ྗ͢Δ࣌FSSPSJOUFSGBDFΛ୳͢ ؔ਺͸ଟ͘ͷ৔߹Τϥʔ஋Λฦ͠ɺ ݺͼग़͠ίʔυ͸ Τϥʔ͕OJMʹ౳͍͔͠Ͳ͏͔Λςετ͢Δ͜ͱͰ ΤϥʔΛॲཧ͢Δඞཁ͕͋Δ OJMFSSPS͸੒ޭΛࣔ͠ɺඇOJMFSSPS͸ࣦഊΛࣔ͢
  55. READERS JPύοέʔδ͸ɺ σʔλͷετϦʔϜͷಡΈऔΓऴྃΛද͢ JP3FBEFSJOUFSGBDFΛنఆ͍ͯ͠Δ (Pඪ४ϥΠϒϥϦʹ͸ɺ ϑΝΠϧɺωοτϫʔΫ઀ଓɺ ίϯϓϨοαʔɺ҉߸ͳͲ ΛؚΉ͜ΕΒͷJOUFSGBDFͷ ଟ͘ͷ࣮૷ؚ͕·Ε͍ͯΔ JP3FBEFSJOUFSGBDFʹ͸

    3FBEϝιου͕͋Δ 3FBE͸ɺ ࢦఆ͞ΕͨόΠτεϥΠεʹσʔλΛಡΈࠐΈɺ ಡΈࠐ·ΕͨόΠτ਺ͱΤϥʔ஋Λฦ͢͠ ετϦʔϜ͕ऴྃ͢ΔͱɺJP&0'ΤϥʔΛฦ͢ ग़ྗ݁Ռ
  56. IMAGES JNBHFύοέʔδ͸ɺ *NBHFJOUFSGBDFΛఆٛ͢Δ ஫ɿ#PVOETϝιουͷ3FDUBOHMF໭Γ஋͸ɺ એݴ͕JNBHFύοέʔδ಺ʹ͋ΔͨΊɺ ࣮ࡍʹ͸JNBHF3FDUBOHMFͰ͋Δ

  57. IMAGES JNBHFύοέʔδ͸ɺ *NBHFJOUFSGBDFΛఆٛ͢Δ ஫ɿ#PVOETϝιουͷ3FDUBOHMF໭Γ஋͸ɺ એݴ͕JNBHFύοέʔδ಺ʹ͋ΔͨΊɺ ࣮ࡍʹ͸JNBHF3FDUBOHMFͰ͋Δ Ҿ༻ɿhttps://golang.org/src/image/color/color.go

  58. IMAGES JNBHFύοέʔδ͸ɺ *NBHFJOUFSGBDFΛఆٛ͢Δ Ҿ༻ɿhttps://golang.org/src/image/image.go ஫ɿ#PVOETϝιουͷ3FDUBOHMF໭Γ஋͸ɺ એݴ͕JNBHFύοέʔδ಺ʹ͋ΔͨΊɺ ࣮ࡍʹ͸JNBHF3FDUBOHMFͰ͋Δ Ҿ༻ɿhttps://golang.org/src/image/color/color.go

  59. IMAGES JNBHFύοέʔδ͸ɺ *NBHFJOUFSGBDFΛఆٛ͢Δ Ҿ༻ɿhttps://golang.org/src/image/image.go ஫ɿ#PVOETϝιουͷ3FDUBOHMF໭Γ஋͸ɺ એݴ͕JNBHFύοέʔδ಺ʹ͋ΔͨΊɺ ࣮ࡍʹ͸JNBHF3FDUBOHMFͰ͋Δ Ҿ༻ɿhttps://golang.org/src/image/color/color.go Ҿ༻ɿhttps://golang.org/src/image/image.go

  60. IMAGES JNBHFύοέʔδ͸ɺ *NBHFJOUFSGBDFΛఆٛ͢Δ Ҿ༻ɿhttps://golang.org/src/image/image.go ஫ɿ#PVOETϝιουͷ3FDUBOHMF໭Γ஋͸ɺ એݴ͕JNBHFύοέʔδ಺ʹ͋ΔͨΊɺ ࣮ࡍʹ͸JNBHF3FDUBOHMFͰ͋Δ Ҿ༻ɿhttps://golang.org/src/image/color/color.go Ҿ༻ɿhttps://golang.org/src/image/image.go Ҿ༻ɿhttps://golang.org/src/image/color/color.go

  61. ҰॹʹಡΉͱྑ͍هࣄ  w GVODܦ༝ͰJOUFSGBDFܕʹOJMΛೖΕΔͱɺOJMѻ͍ʹͳΒͳ͍ɻ IUUQTRJJUBDPNSFJLJJUFNTGFBDFBEE  w (PMBOHͷOJMʹ͍ͭͯ IUUQTDISJTUJOBIBUFOBCMPHDPNFOUSZ 

    w CVJMEXFCBQQMJDBUJPOXJUIHPMBOH IUUQTHJUIVCDPNBTUBYJFCVJMEXFCBQQMJDBUJPOXJUIHPMBOHCMPCNBTUFSKBQSFGBDFNE  w (PݴޠۭΠϯλʔϑΣʔεͱܕΞαʔγϣϯ IUUQTCMPHZZVLJOFUFOUSZ  w (PMBOH଎शJOUFSGBDF\^ܕͱJOUFSGBDF IUUQTRJJUBDPNTIUBUTVOPJUFNTDDFBFBGEGEG 
  62. THANKS • "5PVSPG(P IUUQUPVSHPMBOHPSH  • "5PVSPG(P ೔ຊޠ຋༁൛  IUUQTHPUPVSKQBQQTQPUDPN

     • HPQIFSJ[FNF IUUQTHPQIFSJ[FNF  • FHPOFMCSFHPQIFST IUUQTHJUIVCDPNFHPOFMCSFHPQIFST  • BTIMFZNDOBNBSBHPQIFST IUUQTHJUIVCDPNBTIMFZNDOBNBSBHPQIFST