{"id":15672,"date":"2024-03-15T11:33:44","date_gmt":"2024-03-15T11:33:44","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/"},"modified":"2025-08-06T20:35:19","modified_gmt":"2025-08-06T20:35:19","slug":"how-does-go-language-achieve-concurrent-requests","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/","title":{"rendered":"How does Go language achieve concurrent requests?"},"content":{"rendered":"<p>The Go language can achieve concurrent requests by using goroutines and channels. Here is a simple example:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">package<\/span> main\r\n\r\n<span class=\"hljs-keyword\">import<\/span> (\r\n\t<span class=\"hljs-string\">\"fmt\"<\/span>\r\n\t<span class=\"hljs-string\">\"net\/http\"<\/span>\r\n\t<span class=\"hljs-string\">\"time\"<\/span>\r\n)\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span><\/span> {\r\n\t<span class=\"hljs-comment\">\/\/ \u521b\u5efa\u4e00\u4e2a\u901a\u9053\uff0c\u7528\u4e8e\u63a5\u6536\u8bf7\u6c42\u7ed3\u679c<\/span>\r\n\tresults := <span class=\"hljs-built_in\">make<\/span>(<span class=\"hljs-keyword\">chan<\/span> <span class=\"hljs-type\">string<\/span>)\r\n\r\n\t<span class=\"hljs-comment\">\/\/ \u5b9a\u4e49\u4e00\u7ec4URL<\/span>\r\n\turls := []<span class=\"hljs-type\">string<\/span>{\r\n\t\t<span class=\"hljs-string\">\"https:\/\/www.google.com\"<\/span>,\r\n\t\t<span class=\"hljs-string\">\"https:\/\/www.baidu.com\"<\/span>,\r\n\t\t<span class=\"hljs-string\">\"https:\/\/www.github.com\"<\/span>,\r\n\t}\r\n\r\n\t<span class=\"hljs-comment\">\/\/ \u904d\u5386URL\uff0c\u4e3a\u6bcf\u4e2aURL\u542f\u52a8\u4e00\u4e2agoroutine\u8fdb\u884c\u5e76\u884c\u8bf7\u6c42<\/span>\r\n\t<span class=\"hljs-keyword\">for<\/span> _, url := <span class=\"hljs-keyword\">range<\/span> urls {\r\n\t\t<span class=\"hljs-keyword\">go<\/span> request(url, results)\r\n\t}\r\n\r\n\t<span class=\"hljs-comment\">\/\/ \u7b49\u5f85\u6240\u6709\u8bf7\u6c42\u5b8c\u6210\uff0c\u5e76\u6536\u96c6\u7ed3\u679c<\/span>\r\n\t<span class=\"hljs-keyword\">for<\/span> i := <span class=\"hljs-number\">0<\/span>; i &lt; <span class=\"hljs-built_in\">len<\/span>(urls); i++ {\r\n\t\tresult := &lt;-results\r\n\t\tfmt.Println(result)\r\n\t}\r\n}\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-title\">request<\/span><span class=\"hljs-params\">(url <span class=\"hljs-type\">string<\/span>, results <span class=\"hljs-keyword\">chan<\/span>&lt;- <span class=\"hljs-type\">string<\/span>)<\/span><\/span> {\r\n\t<span class=\"hljs-comment\">\/\/ \u53d1\u9001HTTP GET\u8bf7\u6c42<\/span>\r\n\tresp, err := http.Get(url)\r\n\t<span class=\"hljs-keyword\">if<\/span> err != <span class=\"hljs-literal\">nil<\/span> {\r\n\t\tresults &lt;- fmt.Sprintf(<span class=\"hljs-string\">\"Error requesting %s: %s\"<\/span>, url, err)\r\n\t\t<span class=\"hljs-keyword\">return<\/span>\r\n\t}\r\n\t<span class=\"hljs-keyword\">defer<\/span> resp.Body.Close()\r\n\r\n\t<span class=\"hljs-comment\">\/\/ \u6a21\u62df\u5904\u7406\u54cd\u5e94\u7684\u5ef6\u8fdf<\/span>\r\n\ttime.Sleep(time.Second)\r\n\r\n\t<span class=\"hljs-comment\">\/\/ \u8bfb\u53d6\u54cd\u5e94\u5185\u5bb9<\/span>\r\n\tresults &lt;- fmt.Sprintf(<span class=\"hljs-string\">\"Request to %s completed with status code %d\"<\/span>, url, resp.StatusCode)\r\n}\r\n<\/code><\/pre>\n<p>In the example above, we created a channel called results to receive the results of requests. We then defined a set of URLs and used the go keyword to start a group of goroutines to send requests in parallel. Each goroutine executes the request function, which sends an HTTP GET request and sends the response to the results channel.<\/p>\n<p>Finally, we use a loop to wait for all requests to finish and collect the results from the results channel. This way, we can send multiple requests in parallel and handle the results once all requests are completed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Go language can achieve concurrent requests by using goroutines and channels. Here is a simple example: package main import ( &#8220;fmt&#8221; &#8220;net\/http&#8221; &#8220;time&#8221; ) func main() { \/\/ \u521b\u5efa\u4e00\u4e2a\u901a\u9053\uff0c\u7528\u4e8e\u63a5\u6536\u8bf7\u6c42\u7ed3\u679c results := make(chan string) \/\/ \u5b9a\u4e49\u4e00\u7ec4URL urls := []string{ &#8220;https:\/\/www.google.com&#8221;, &#8220;https:\/\/www.baidu.com&#8221;, &#8220;https:\/\/www.github.com&#8221;, } \/\/ \u904d\u5386URL\uff0c\u4e3a\u6bcf\u4e2aURL\u542f\u52a8\u4e00\u4e2agoroutine\u8fdb\u884c\u5e76\u884c\u8bf7\u6c42 for _, url := range urls { go request(url, results) [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[453,1402,299,1404,1403],"class_list":["post-15672","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-development","tag-guide","tag-programming","tag-technology","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How does Go language achieve concurrent requests? - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn about how does go language achieve concurrent requests?. Comprehensive guide with examples and best practices.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How does Go language achieve concurrent requests?\" \/>\n<meta property=\"og:description\" content=\"Learn about how does go language achieve concurrent requests?. Comprehensive guide with examples and best practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T11:33:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-06T20:35:19+00:00\" \/>\n<meta name=\"author\" content=\"William Carter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"William Carter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/\"},\"author\":{\"name\":\"William Carter\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0\"},\"headline\":\"How does Go language achieve concurrent requests?\",\"datePublished\":\"2024-03-15T11:33:44+00:00\",\"dateModified\":\"2025-08-06T20:35:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/\"},\"wordCount\":121,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Development\",\"guide\",\"programming\",\"technology\",\"tutorial\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/\",\"name\":\"How does Go language achieve concurrent requests? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T11:33:44+00:00\",\"dateModified\":\"2025-08-06T20:35:19+00:00\",\"description\":\"Learn about how does go language achieve concurrent requests?. Comprehensive guide with examples and best practices.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How does Go language achieve concurrent requests?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0\",\"name\":\"William Carter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"caption\":\"William Carter\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How does Go language achieve concurrent requests? - Blog - Silicon Cloud","description":"Learn about how does go language achieve concurrent requests?. Comprehensive guide with examples and best practices.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/","og_locale":"en_US","og_type":"article","og_title":"How does Go language achieve concurrent requests?","og_description":"Learn about how does go language achieve concurrent requests?. Comprehensive guide with examples and best practices.","og_url":"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T11:33:44+00:00","article_modified_time":"2025-08-06T20:35:19+00:00","author":"William Carter","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"William Carter","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/"},"author":{"name":"William Carter","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0"},"headline":"How does Go language achieve concurrent requests?","datePublished":"2024-03-15T11:33:44+00:00","dateModified":"2025-08-06T20:35:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/"},"wordCount":121,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Development","guide","programming","technology","tutorial"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/","url":"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/","name":"How does Go language achieve concurrent requests? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T11:33:44+00:00","dateModified":"2025-08-06T20:35:19+00:00","description":"Learn about how does go language achieve concurrent requests?. Comprehensive guide with examples and best practices.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-does-go-language-achieve-concurrent-requests\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How does Go language achieve concurrent requests?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0","name":"William Carter","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","caption":"William Carter"},"url":"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/15672","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=15672"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/15672\/revisions"}],"predecessor-version":[{"id":49194,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/15672\/revisions\/49194"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=15672"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=15672"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=15672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}