f2() { fmt.Println("f2") } func main() { go f1() go f2() time.Sleep(100 * time.Microsecond) } +VTUlgoz $ go run main.go f1 f2 $ go run main.go f2 f1 m a i n g o r o u t i n e g o r o u t i n e 2 g o r o u t i n e 1 3 つ の g o r o u t i n e が 平行 で 動 いて いる !
if err := http.ListenAndServe(":"+port, nil); err != nil { log.Printf("αʔόʔ͕ҟৗऴྃ͠·ͨ͠: %v", err ) } ୈճϋϯζΦϯͷίʔυͷҰ෦ func (srv *Server) Serve(l net.Listener) error { .. . for { rw, err := l.Accept( ) if err != nil { .. . } .. . go c.serve(connCtx ) } } TSDOFUIUUQTFSWFSHP -JTUFO"OE4FSWF TFSWFS-JTUFO"OE4FSWF TFSWFS4FSWF イ ベ ン ト ル ー プ は m a i n g o r o u t i n e 各 コ ネ ク シ ョン の 処理 は 別 の g o r o u t i n e
o u t i n e ε Ϩου ε Ϩου ε Ϩου ε Ϩου g o r o u t i n e ଓ ଓ͋ͨΓ HPSPVUJOF HPSPVUJOFͷελοΫαΠζ ेʹখ͘͞ɺͨ͘͞Μىͯ͜͠ େৎʂ ֤HPSPVUJOF(Pϥϯλ ΠϜ͕ޮతʹཧ͍ͯ͠Δ ϒϩοΫ͠ͳ͍ݶΓ ϓϦΤϯϓγϣϯ͞Εͳ͍ *0ͪͷ HPSPVUJOF$16ʹׂΓͯͳ ͍ͷͰແବ͕ͳ͍