ã²ãŒã Goã«ã¯éåžžã«ã·ã³ãã«ãªã«ãŒã«ããããŸããããã¹ã¿ãŒã«ãªãã®ã¯ç°¡åã§ã¯ãããŸããããã¿ãŒã³ãããªããªãŒããã®ä»ã®æŠç¥çã³ã³ã»ãããèããæ¹æ³ãåŠã¶å¿
èŠããããŸãã Goèšèªã¯ããã®ã²ãŒã ã®ååãšåãããã«èª€ã£ãŠåœåãããŠããŸããã ãµã³ãã©ã³ã·ã¹ã³ã§ã®æè¿ã®éäŒã§ã®ã¹ããŒãã®äžã§ãããã»ãã€ã¯ã¯å²Proã®ããšããã«èšåããŸãããããã¯ãåçŽã§è©©çãªãã¬ãŒãºã§è€éãªæŠç¥ã説æããŠããŸãã ãããã®ä»®å®ã¯ãã²ãŒã Goã«ç²ŸéããŠãã人ã«ãšã£ãŠããæ·±ãæå³ãæã¡ã粟éããŠããªã人ã«ãšã£ãŠã¯ç©ºã®ãã¬ãŒãºã«èŠãããããããŸããã ãŸãããã®éæè¡çãªã¬ããŒãã§ã¯ãGoèšèªã®ãä»®å®ããåæ§ã®æ¹æ³ã§çºæããããšãææ¡ããŸããã

ãããã®ããã€ããæ¬¡ã«ç€ºããŸãã
- ã¡ã¢ãªãå
±æããŠéä¿¡ããã®ã§ã¯ãªããéä¿¡ããŠã¡ã¢ãªãå
±æããŸãã
- äžŠè¡æ§ã¯äžŠååŠçã§ã¯ãããŸããã
- ãã£ã³ãã«ã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã ãã¥ãŒããã¯ã¹ã¯ã·ãªã¢ã«åããŸãã
- ã€ã³ã¿ãŒãã§ãŒã¹ã倧ããã»ã©ãæœè±¡åºŠã¯äœããªããŸãã
- ã€ã³ã¿ãŒãã§ã€ã¹{}ã¯äœãèšããŸããã
- Gofmtã®ã¹ã¿ã€ã«ã¯èª°ã®ãæ°ã«å
¥ãã§ããããŸããããgofmtã¯èª°ã®ãæ°ã«å
¥ãã§ããããŸãã
- å°ãã®ã³ããŒã¯ãå°ãã®äŸåé¢ä¿ãããåªããŠããŸãã
- Cgoã¯Goã§ã¯ãããŸããã
- ã¯ãªã¢ã¯è³¢ããããåªããŠããŸãã
- åå°ã¯æ±ºããŠæç¢ºã§ã¯ãããŸããã
- ãšã©ãŒã¯å€ã§ãã
ããã¯
Pythonã®Zenã«å°ã䌌ãŠããŸãã ããªãã¯ãããã«åæããªããããããŸãããããããã®ä»®å®ã¯å²inã®ã€ãã£ãªã ãšã¢ãããŒããåæ ããŠããŸãã ã¬ããŒãã«åºã¥ããŠããããã詳ããèŠãŠãããŸãããïŒæçš¿ã®æåŸã®ãããªïŒã
ãã¡ã¢ãªã®å
±æã«ã€ããŠè©±ããªãã§ãã ããã éä¿¡ããŠã¡ã¢ãªãå
±æããŸããã ïŒã¡ã¢ãªãå
±æããŠéä¿¡ããã®ã§ã¯ãªããéä¿¡ããŠã¡ã¢ãªãå
±æããŸãïŒ
ãã®ä»®å®ã¯èª°ããç¥ã£ãŠããŸã; Goã®ç«¶äºçãªããã°ã©ãã³ã°ãã¿ãŒã³ã«é¢ãã
ã¬ããŒããš
æçš¿ã§ç¹°ãè¿ãèãããŠããŸãã ãã®ä»®å®ã¯ããã£ãã«ããã³ãŽã«ãŒãã³ã®åäœã¡ã«ããºã ã®æ¬è³ªãçè§£ããããšãç®çãšããŠããŸãã颿°ã¯åãã¡ã¢ãªãå
±æãããå®å
šã«éä¿¡ãããã£ãã«ãä»ããŠããŒã¿ãéä¿¡ããŸãã
ãç«¶äºã¯äžŠåæ§ã§ã¯ãªãã ïŒäžŠè¡æ§ã¯äžŠåæ§ã§ã¯ãªãïŒ
äžŠè¡æ§ãšããèšèããã·ã¢èªã«ããŸã翻蚳ã§ãããã©ããã¯ããããŸããããèŠç¹ã¯ã䞊ååŠçã¯åãã³ãŒãã®åãªã䞊åå®è¡ã§ããããã«ãã³ã¢ãæå€§éã«æŽ»çšãããœãããŠã§ã¢-ç«¶äºåã®ãããœãããŠã§ã¢ã¯ç«¶äºåãã€ãŸãããžãã¯ãæ§ç¯ããæ¹æ³ã§ãããã°ã©ã ã åå¿è
ã¯ããããã®2ã€ã®æŠå¿µãæ··åããããšããããããŸãã
åãååã®Pikeã®åªãã
ããã©ãŒãã³ã¹ããããŸãããŸã 誰ãããªããã確èªããŠãã ããã
ãã£ãã«-ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ããã¥ãŒããã¯ã¹-ã·ãªã¢ã«å ïŒãã£ãã«ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ããã¥ãŒããã¯ã¹ã·ãªã¢ã«åïŒ
ãã€ãã¥ãŒããã¯ã¹ã䜿çšãããããã€ãã£ãã«ã䜿çšãããã«ã€ããŠã®ååã®èšäºïŒ
ãGoã§ã®ãã¥ãŒããã¯ã¹ã§ã®ãã³ã¹ã ïŒã®ãããã¯ã®é©åãªä»®å®ã ãã¥ãŒããã¯ã¹ã¯ãäœããžã®ã¢ã¯ã»ã¹ã®å®è¡ãåçŽã«ã·ãªã¢ã«åããŸããããŽã«ãã³ãšãã£ãã«ã¯ãããã°ã©ã ã®éšåéã®è€éãªã¢ãŒããã¯ãã£ãšããŒã¿äº€ææ§é ãæã€ããã°ã©ã ãäœæããããŒã«ãæäŸããŸãã
ã€ã³ã¿ãŒãã§ãŒã¹ã倧ããã»ã©ãæœè±¡å
ã匱ãGoã®æ°åè
ãç¹ã«Javaã䜿çšãã人ã¯ãå€ãã®å Žåãã€ã³ã¿ãŒãã§ã€ã¹ã¯å€§ãããå€ãã®ã¡ãœãããå«ããã¹ãã ãšèããŠããŸãã ãŸããã€ã³ã¿ãŒãã§ã€ã¹ã®æé»çãªæºè¶³åºŠã«ãã£ãŠæ··ä¹±ããããšããããããŸãã ããããã€ã³ã¿ãŒãã§ãŒã¹ã§æãéèŠãªããšã¯ããã§ã¯ãªããããããåãå·»ãæåã§ããããã®ä»®å®ã«åæ ãããŠããŸãã ã€ã³ã¿ãŒãã§ãŒã¹ãå°ããã»ã©äŸ¿å©ã§ãã ãã€ã¯ã¯ãåœŒãæžãã3ã€ã®æãæçšãªã€ã³ã¿ãŒãã§ã€ã¹ïŒio.Readerãio.Writerãããã³ã€ã³ã¿ãŒãã§ã€ã¹{}ïŒãã3ã€ã«ã€ããŠå¹³å0.666ã¡ãœãããæã£ãŠãããšåè«ãèšã£ãŠããŸãã
ãŒãå€ãæçšã«ãã
ãã€ã³ãã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšããã«ãåã®nullå€ãæçšã«ããæ¹ãè¯ããšããããšã§ãã ãã¡ãããã³ã³ã¹ãã©ã¯ã¿ãŒé¢æ°ãå¿
èŠãªå ŽåããããŸãããåã®å€æ°ãããã®ãŸãŸãåäœãããããšãã§ããå Žåãããã¯åžžã«æçã§ãã äŸã¯ãæšæºã©ã€ãã©ãªã®
bytes.BufferãŸãã¯
sync.Mytexå
ã§ã ã bytes.NewBufferãbytes.NewBufferStringïŒïŒãªã©ã®ã³ã³ã¹ãã©ã¯ã¿ãŒããããŸããã空ã®å€ã¯ããã«äœ¿çšã§ãããããã¡ãŒã§ãã
空ã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯äœãèšããŸããïŒã€ã³ã¿ãŒãã§ãŒã¹{}ã¯äœãèšããŸããïŒ
ãã®ä»®å®ã¯ãã€ã³ã¿ãŒãã§ãŒã¹-ãæ¯ãèãåããäœããæå³ããã«éããªãããšã瀺åããŠããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ãäœæããå Žåãããã¯äœããæå³ããç¹å®ã®ç®çã«åœ¹ç«ã¡ãŸãã 空ã®ã€ã³ã¿ãŒãã§ã€ã¹ïŒã€ã³ã¿ãŒãã§ã€ã¹{}ïŒã¯äœãæå³ãããäœãæå³ããŸããã 䜿çšããå¿
èŠãããå ŽåããããŸãããå€ãã®å ŽåäŸå€ã§ããçç±ã¯ãããŸããããã€ã³ã¿ãŒãã§ã€ã¹{}ã䜿çšããªãã§ãã ããã åå¿è
ã¯å€ãã®å Žåã空ã®ã€ã³ã¿ãŒãã§ã€ã¹ãåå©çšããŸãããã¹ã¿ãã¯ãªãŒããŒãããŒã«é¢ããå€ãã®è³ªåããããã«ã€ããŠã§ãã
Gofmtã®ã¹ã¿ã€ã«ã¯èª°ã®ãæ°ã«å
¥ãã§ããããŸããããgofmtã¯ã¿ããªã®ãæ°ã«å
¥ãã§ãïŒ
ç¿æ
£ã«èŠããã§ããå€ãã®åå¿è
ã¯ãGoã®ã³ãŒãã奜ããªããã«ãã©ãŒããããããŠããªãããšã«äžæºãæŒãããŠããŸãã Gofmtã¯åäžã®ã¹ã¿ã€ã«ã§ãããå人ã®å¥œã¿ã§ã¯ãããŸããã go fmtãŠãŒãã£ãªãã£ã®äœæè
ã§ããGriesmeyerèªèº«ã§ãããå¥ã®ãã©ãŒãããã¹ã¿ã€ã«ã奜ã¿ãŸãã ãããããã©ãŒããããæ¿èªãããŠããgofmtã¯ã©ãã§ãåžžã«äœ¿çšãããŠããŸã-åœç¶ã®ããšãšèããŠãã ããã çµéšè±å¯ãªããã°ã©ããŒã¯go fmtãæãã ãšèããŠããŸããä»ã®äººã®ã³ãŒãã§ã®äœæ¥ã倧å¹
ã«ç°¡çŽ åãããããã§ã-ä»ã®èšèªã§ããŸããŸãªã¹ã¿ã€ã«ã®ãã©ãŒãããã䜿çšããã®ã¯éå»ã®ãã®ã§ãã
æ°ããèšèªããã®ã¢ãããŒããæ¡çšããããšã¯æ³šç®ã«å€ããŸãïŒäŸïŒ
rustfmt ïŒ-ããã¯ãã€ããã§ã€ããŒã圌ã®
è¬æŒ ãGo Legacyãã§èªã£ãããšã§ã-æ°ããèšèªã¯ãåäžã®ãã©ãŒãããã¹ã¿ã€ã«ãšãããæäŸãããŠãŒãã£ãªãã£ããªããã°å®å
šãšã¯èŠãªãããªããªããŸãã
å°ãã®ã³ããŒã¯ãå°ãã®äŸåé¢ä¿ãããåªããŠããŸã
ããã¯ãã§ã«ããã°ã©ãã³ã°å
šè¬ã«åœãŠã¯ãŸããŸãããGoã§ã¯æšæºã©ã€ãã©ãªãšæåå
šäœã®äž¡æ¹ã§èŠãããšãã§ããŸãã ãã
㯠ã
ãéè€ã¯æªãæœè±¡åãããå®ãããšããããç¥ãããã€ã³ã¹ããŒã«ãéšåçã«åæ ããŠããŸã
ã Pikeã¯ãGoogleã®åæã®é ãã»ãšãã©ãã³ãŒãã®åå©çšã«é¢å¿ããããšèšããããšèªã£ãŠããŸãã ã€ã³ããŒãããããšã§1ã€ã®ç¹°ãè¿ãè¡ãæžãããšãé¿ããããšãã§ãããªããããããå¿
èŠããããŸãã Pikeã«ãããšãGoogleã¯ãã®ã¢ãããŒãã®ããã«ã³ãŒãã®åé¡ã«ãŸã åãçµãã§ããŸãã å€ãã®å Žåãæ©èœã¯ïŒæåã®ãªãã¡ã¯ã¿ãªã³ã°åïŒåæ§ã§ããããäŸåé¢ä¿ã®æ©èœã®äžéšã®ã¿ãå¿
èŠã§ããã150kbã®äŸåé¢ä¿ãã€ã³ããŒãããããã5è¡ãèšè¿°ããæ¹ãå¹ççã§ãã äŸãšããŠã
strconvããã±ãŒãžã®
IsPrint颿°-unicode.IsPrintïŒïŒã®æ©èœãè€è£œããŸããããã¹ãã§ã¯æ©èœãåãããã«æ©èœããããšã確èªããŸãã èŠçŽãããšãæ£åœãªå Žæã«ã³ãŒããã³ããŒããããšãæããªãã§ãã ããã
syscallåŒã³åºããå«ãã³ãŒãã«ã¯ãã«ãã¿ã°ãå«ããå¿
èŠããã
ãŸã ïŒsyscallã¯åžžã«ãã«ãã¿ã°ã§ä¿è·ããå¿
èŠããããŸãïŒ
æè¿ç¿»èš³ãããèšäº
ãç°¡åã«ç§»æ€ã§ããGoã³ãŒãã®æžãæ¹ãã®ãããã¯ã Goã®syscallããã±ãŒãžã«ã€ããŠäžæºãèšã人ãããŸã-倿Žããå¿
èŠããããŸãããç§»æ€ã¯ããŸããã ãã ããsyscallã¯å®çŸ©ã«ãããã©ãããã©ãŒã äŸåã®åŒã³åºãã§ãããããé«å質ã®ã¯ãã¹ãã©ãããã©ãŒã ã³ãŒããäœæããå Žåã¯ãsyscallã䜿çšãããã¡ã€ã«ã«ãã«ãã¿ã°ãåžžã«è¿œå ããŠãã ããã
Cgoã¯åžžã«
ãã«ãã¿ã°ã§ä¿è·ããå¿
èŠããããŸãïŒ
ãŸã£ããåãçç±ã§-cgoã䜿çšãããšãã¯åžžã«ãã«ãã¿ã°ã远å ããŸãã CãåŒã³åºããšãå®éã«äœãèµ·ãã£ãŠããã®ã誰ã«ãããããŸããããã»ãšãã©ç¢ºå®ã«ç§»æ€æ§ããããŸããã
Cgoã¯è¡ããªã ïŒCgoã¯è¡ããªãïŒ
Goã§Cã³ãŒãã䜿çšããã®ãããã«ç°¡åããå€ãã®äººãåãã§ããŸãã ãã¡ããããããå¿
èŠãªå ŽåããããŸããããã€ã¯ã¯CgoãäžåºŠã䜿çšããããšããªãããšãèªããŠããŸããGoã®äžçã§ã¯ãã¡ã¢ãªãå®å®æ§ãã»ãã¥ãªãã£ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã«ã€ããŠæç¢ºãªçè§£ããããŸãã Googleã®90ïŒ
ã®ã±ãŒã¹ã§ã¯ã誰ãããç§ã®ããã°ã©ã ãã¯ã©ãã·ã¥ããã®ã§ããããçè§£ããã®ãæäŒã£ãŠãã ããããšèšããšãCgoã§ããããšãããããŸãã
å®å
šã§ãªãããã±ãŒãžã«ã¯ä¿èšŒã¯ãããŸããïŒå®å
šã§ãªãããã±ãŒãžã«ã¯ä¿èšŒããããŸããïŒ
ããã¯ã
å®å
šã§ãªãããã±ãŒãžã䜿çšããŠèšè¿°ãããã³ãŒããç§»æ€æ§ã
ãªããšããäºå®ã«çŠç¹ãåœãŠãŠãããGo 1å
ã®åŸæ¹äºææ§ã®ä¿èšŒãã«ããŒããŠããŸããïŒããã¯ããã±ãŒãžããã¥ã¡ã³ãã®æåã®è¡ã«èšè¿°ãããŠããŸãïŒã ãããŸã§ã®ãšãããäœã倿ŽãããŠããŸããããäœããã®çç±ã§å®å
šã§ãªããã®ã䜿çšããå Žåã¯ãå°æ¥ã®ããŒãžã§ã³ã§ã¯å€æŽã«é©å¿ããå¿
èŠãããããšã«æ³šæããŠãã ããã
ã¯ãªã¢ã¯è³¢ããããåªããŠããŸã
Goã§ã¯ãã³ãŒãã®æå¿«ããšèªã¿ããããæåã«æ¥ããšããä»®å®ã ãŸããé£è§£ãªã³ãŒãã§ã¯ãªããæç¢ºã§ããããããã³ãŒããæžãããåªåããå¿
èŠããããŸãã é
ããæ©ãããã³ãŒãã¯ä»ã®ããã°ã©ããŒã«ãã£ãŠèªã¿åãããæ¹åããããªãã¡ã¯ã¿ãªã³ã°ããããããæç¢ºã§ããã»ã©ãçµæã¯ããç°¡åã§è¿
éã«ãªããŸãã Goã¯ã©ãããŠããããæ¯æŽããè²¢ç®ããŸããèšèªã®èšèšå
šäœããã®ç®æšã§æºããããŠããŸãã
åå°ã¯æ±ºããŠæç¢ºã§ã¯ãããŸãã
Goã§ã®
ãªãã¬ã¯ã·ã§ã³ ïŒããã°ã©ã ãç¬èªã®æ§é ã倿Žããæ©èœïŒã¯
ãªãã¬ã¯ãããã±ãŒãžã«ãã£ãŠå®è£
ããã人ã
ã¯ãã°ãã°ãããå Žéãã§äœ¿çšããããšããŸãã ãªãã¬ã¯ã·ã§ã³ã¯éåžžã«åŒ·åãªãã®ã§ãããçè§£ããã®ã¯éåžžã«é£ãããå®éããããå¿
èŠãšãã人ãšã¿ã¹ã¯ã¯ããå°æ°ã§ãã ãã€ã¯ã¯ãããããGoã§æããªãã¬ã¯ã·ã§ã³ã³ãŒããæžãããšèšããŸããããããããã®ã¯ä»ã§ãå«ãã§ãã ãããŠåœŒã¯ã人ã
ããªãã¬ã¯ã·ã§ã³ã䜿çšããªããã奚å±ãããå¿
èŠããããšä¿¡ããŠããŸãã
ãšã©ãŒã¯å€ã§ã
ãã§ã«ããã§ç¹°ãè¿ã
åãäžããããŠãããã1ã€ã®éèŠãªä»®å®
ã¯ãç¹ã«å
¬åŒã®Goããã°ã®èšäºã§ãã åå¿è
ã¯ãã°ãã°ãããçè§£ãããããªãerrïŒ= Nil everywhereãªãã°ããããæžãã¹ããªã®ãããšå°ããŸãã ã¯ããããªãã¯ããã°ã©ãã³ã°ããŠããªãã®ã§ãã³ãŒãããªãããããŠããã®ã§ãã å€ãã®äººã¯ãerrïŒ= Nilãtry..catchã®ä»£ããã«ãªããšèããŠããŸã...ã¯ããšã©ãŒãåŠçããããã®ç¹å¥ãªèšèªæ§é ã§ãã ããããããã§ã¯ãããŸãã; try ... catch ...ã§ããã°ã©ã ããããšã¯ã§ããŸããã Goã®ãšã©ãŒã§ã¯ãããã°ã©ã ããžãã¯ãå¿
èŠãšããããšãå®è¡ã§ããŸãã
ãšã©ãŒããã§ãã¯ããã ãã§
ãªã ãé©åã«åŠçãã
ãšã©ãŒã¯ããã§ãã¯ããã ãã§ãªãããšã©ãŒã®ç¶æ³ãæ£ããåŠçãããããã«ãšã©ãŒãã©ãåŠçããããèããããã«éåžžã«éèŠã§ãã ãããããäœããã®æ
å ±ã§ãšã©ãŒãè£è¶³ããå¿
èŠãããå ŽåãåŸã§åŠçããããã«äœãä»ã®ãã®ãèŠããŠããããšãå¯èœã§ãã ããã°ã©ãã³ã°ã®éåžžã«éèŠãªéšåã¯ããšã©ãŒã®åŠçæ¹æ³ã§ãã ãã§ãã¯ããŠè»¢éããã ãã§ãªãããã®ãšã©ãŒãé©åã«åŠçããæ¹æ³ãèããŠãã ããã ããã¯ãã¹ãŠã®èšèªã«åœãŠã¯ãŸããŸãããGoã®ãšã©ãŒã¯åãªãæå³ã§ãããããã³ãŒãå
ã«çŸããæ£ç¢ºãªãšã©ãŒåŠçãå®è£
ããã®ãç°¡åã§ãç°¡åã«å®è£
ã§ããŸãã
ã¢ãŒããã¯ãã£ã
èã ãã³ã³ããŒãã³ãã«ååãä»ããè©³çŽ°ãææžåããŸã
ããã¯ãã³ãŒãã®ã³ã³ããŒãã³ããã¡ãœããã颿°ã倿°ã«é©åã«ååãä»ããããšã®éèŠæ§ã«ã€ããŠã§ãã ãããã®ååã¯ãããã±ãŒãžã®ãŠãŒã¶ãŒã³ãŒãã«å«ãŸããŸãã ãŸããååãæåããçè§£ã§ããå Žåãããã°ã©ã ã®èšèšã¯ããæç¢ºã§çè§£ãããããªããŸãã ãããããã¡ããã説æããå¿
èŠããã詳现ãåžžã«ãããŸãããããŠä»ãããããããã¥ã¡ã³ãã«å
¥ããå¿
èŠããããŸãã
ããã¥ã¡ã³ãã¯ãŠãŒã¶ãŒåãã§ã
颿°ã®ããã¥ã¡ã³ãã§ã¯ããã®é¢æ°ãäœãããã®ãã§ã¯ãªãããªããããå¿
èŠãªã®ãã説æããå¿
èŠããããšããäºå®ã ããã¯éåžžã«éèŠãªåºå¥ã§ãããèŠéããããã¡ã§ãã ããã¥ã¡ã³ããæžããšãã¯ãããã±ãŒãžã®ãŠãŒã¶ãŒã®ç®ãéããŠãããèŠãŠãã ããã
ããŠãç°¡æœããè©©ãæŠå¿µäž»çŸ©ã®åºæºãæºããä»ã®ä»®å®ãæãä»ãããšãã§ããããæ°è»œã«ææ¡ããŠãã ããã
go-proverbs.imtqy.comã¹ã©ã€ãïŒãªãªãžãã«ã§ã¯ãªããçïŒïŒ
speakerdeck.com/ajstarks/go-proverbsãããªïŒ