ãããã®ããã€ãã次ã«ç€ºããŸãã
- ã¡ã¢ãªãå ±æããŠéä¿¡ããã®ã§ã¯ãªããéä¿¡ããŠã¡ã¢ãªãå ±æããŸãã
- 䞊è¡æ§ã¯äžŠååŠçã§ã¯ãããŸããã
- ãã£ã³ãã«ã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã ãã¥ãŒããã¯ã¹ã¯ã·ãªã¢ã«åããŸãã
- ã€ã³ã¿ãŒãã§ãŒã¹ã倧ããã»ã©ãæœè±¡åºŠã¯äœããªããŸãã
- ã€ã³ã¿ãŒãã§ã€ã¹{}ã¯äœãèšããŸããã
- 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.github.io
ã¹ã©ã€ãïŒãªãªãžãã«ã§ã¯ãªããçïŒïŒ speakerdeck.com/ajstarks/go-proverbs
ãããªïŒ