[Go ååŠç¿] Go ã® goroutine ãš channel ãçè§£ãã
åã³ Go ã®åŠç¿ãåéããŠããŠã以åçè§£ãææ§ã ã£ãç¹ãéç¹çã«åŠã³çŽããŠããŸãããã®ãã¡ã®1〠goroutine, channel ã«ã€ããŠèšäºã«ããããšæããŸãã Go ã®äžŠè¡åŠç㯠goroutine ãš channel ãšãã2ã€ã®ä»çµã¿ãäžå¿ã«èšèšãããŠããŸããchannel ãéããŠããŒã¿ãããåãããããšã§å®å šãªäžŠè¡åŠçãå®çŸã§ããŸãããã®èšäºã§ã¯ãµã³ãã«ã³ãŒãã亀ããŠè§£èª¬ããŸãã ã³ãŒãã¯ä»¥äžã®ã¬ããžããªã«ãããŸãã https://github.com/jedipunkz/go-tips goroutine ãšã¯ goroutine 㯠Go ã®ã©ã³ã¿ã€ã ã管çãã軜éãªã¹ã¬ããã§ããgo ããŒã¯ãŒããã€ããŠé¢æ°ãåŒã³åºãã ãã§äžŠè¡å®è¡ã§ããŸãã éåžžã®é¢æ°åŒã³åºãã¯åŒã³åºãå ãåŠçå®äºãåŸ ã¡ãŸãããgo ãã€ãããšåŒã³åºãå ã¯ããã«æ¬¡ã®åŠçãžé²ã¿ã颿°ã¯å¥ã® goroutine ã§äžŠè¡ããŠåããŸãã channel ãšã¯ channel 㯠goroutine éã§ããŒã¿ãå®å šã«ããåãããããã®ãã€ãã§ããmake(chan T) ã§äœæãã<- æŒç®åã§éåä¿¡ããŸãã éä¿¡: ch <- value åä¿¡: value := <-ch channel ã䜿ããš goroutine éã§åæ¹åã«ããŒã¿ãããåãã§ããŸãã channel ã«ã¯ãããã¡ãªããšãããã¡ããã®2çš®é¡ããããŸãããããã¡ãªã channel ã¯éåä¿¡ãæããŸã§ãããã¯ãããããgoroutine éã®åæç¹ãšããŠæ©èœããŸãããããã¡ãã channel ã¯ãããã¡ã«ç©ºããããéãéä¿¡åŽã¯ãããã¯ããå ãžé²ããŸãã ãã¿ãŒã³1: åºæ¬ç㪠channel ã®äœ¿ãæ¹ ãŸãã¯æãã·ã³ãã«ãªãã¿ãŒã³ã§ããproducer goroutine ãå€ãéä¿¡ããmain goroutine ãåä¿¡ããŸãã äœ¿ãæ Web ããè€æ°ã®ãã¡ã€ã«ãããŠã³ããŒãã㊠DB ã«ä¿åãããããªåŠçãèãããšããããã¯ãŒã¯åŸ ã¡ã DB ãžã®æžã蟌ã¿åŸ ã¡ãã»ãšãã©ã§ CPU ã¯ã»ãŒéãã§ããŸãããããã£ã I/O ããŠã³ããªåŠçã§ã¯ã1ä»¶ãã€é çªã«åŠçãããã goroutine ãš channel ã§ãã€ãã©ã€ã³åããã»ããå¹ççã§ããããšãã°ãURL ãªã¹ããèªã¿èŸŒã goroutineããšããã® URL ãã HTTP GET ãã goroutineããåé¢ããchannel ã§ã€ãªãããšã§ååŸãšåŸç¶åŠçã䞊è¡ããŠé²ããããŸãã ...