{"id":15518,"date":"2024-03-15T11:19:44","date_gmt":"2024-03-15T11:19:44","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/"},"modified":"2025-08-06T19:17:39","modified_gmt":"2025-08-06T19:17:39","slug":"how-to-iterate-over-folders-in-golang","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/","title":{"rendered":"How to iterate over folders in Golang?"},"content":{"rendered":"<p>In Go language, the filepath package can be used to traverse folders. 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\">\"os\"<\/span>\r\n\t<span class=\"hljs-string\">\"path\/filepath\"<\/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\">\/\/ \u8bbe\u7f6e\u8981\u904d\u5386\u7684\u6587\u4ef6\u5939\u8def\u5f84<\/span>\r\n\troot := <span class=\"hljs-string\">\"\/path\/to\/folder\"<\/span>\r\n\r\n\terr := filepath.Walk(root, <span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span><span class=\"hljs-params\">(path <span class=\"hljs-type\">string<\/span>, info os.FileInfo, err <span class=\"hljs-type\">error<\/span>)<\/span><\/span> <span class=\"hljs-type\">error<\/span> {\r\n\t\t<span class=\"hljs-keyword\">if<\/span> err != <span class=\"hljs-literal\">nil<\/span> {\r\n\t\t\t<span class=\"hljs-keyword\">return<\/span> err\r\n\t\t}\r\n\r\n\t\t<span class=\"hljs-comment\">\/\/ \u5224\u65ad\u662f\u5426\u662f\u6587\u4ef6\u5939<\/span>\r\n\t\t<span class=\"hljs-keyword\">if<\/span> info.IsDir() {\r\n\t\t\tfmt.Println(<span class=\"hljs-string\">\"\u6587\u4ef6\u5939\uff1a\"<\/span>, path)\r\n\t\t} <span class=\"hljs-keyword\">else<\/span> {\r\n\t\t\tfmt.Println(<span class=\"hljs-string\">\"\u6587\u4ef6\uff1a\"<\/span>, path)\r\n\t\t}\r\n\r\n\t\t<span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">nil<\/span>\r\n\t})\r\n\r\n\t<span class=\"hljs-keyword\">if<\/span> err != <span class=\"hljs-literal\">nil<\/span> {\r\n\t\tfmt.Println(<span class=\"hljs-string\">\"\u904d\u5386\u6587\u4ef6\u5939\u65f6\u53d1\u751f\u9519\u8bef\uff1a\"<\/span>, err)\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>In the above example, we utilize the filepath.Walk function to traverse through folders. This function takes a folder path as a parameter and recursively traverses through the folder and its subfolders. In the callback function for each folder and file, we can access the file path, information (such as if it is a folder), and any possible errors.<\/p>\n<p>You just need to replace &#8220;\/path\/to\/folder&#8221; with the path of the folder you want to traverse.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Go language, the filepath package can be used to traverse folders. Here is a simple example: package main import ( &#8220;fmt&#8221; &#8220;os&#8221; &#8220;path\/filepath&#8221; ) func main() { \/\/ \u8bbe\u7f6e\u8981\u904d\u5386\u7684\u6587\u4ef6\u5939\u8def\u5f84 root := &#8220;\/path\/to\/folder&#8221; err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { if err != nil { return err } \/\/ \u5224\u65ad\u662f\u5426\u662f\u6587\u4ef6\u5939 if [&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-15518","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 to iterate over folders in Golang? - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn about how to iterate over folders in golang?. 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-to-iterate-over-folders-in-golang\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to iterate over folders in Golang?\" \/>\n<meta property=\"og:description\" content=\"Learn about how to iterate over folders in golang?. Comprehensive guide with examples and best practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/\" \/>\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:19:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-06T19:17:39+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-to-iterate-over-folders-in-golang\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/\"},\"author\":{\"name\":\"William Carter\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0\"},\"headline\":\"How to iterate over folders in Golang?\",\"datePublished\":\"2024-03-15T11:19:44+00:00\",\"dateModified\":\"2025-08-06T19:17:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/\"},\"wordCount\":101,\"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-to-iterate-over-folders-in-golang\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/\",\"name\":\"How to iterate over folders in Golang? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T11:19:44+00:00\",\"dateModified\":\"2025-08-06T19:17:39+00:00\",\"description\":\"Learn about how to iterate over folders in golang?. Comprehensive guide with examples and best practices.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to iterate over folders in Golang?\"}]},{\"@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 to iterate over folders in Golang? - Blog - Silicon Cloud","description":"Learn about how to iterate over folders in golang?. 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-to-iterate-over-folders-in-golang\/","og_locale":"en_US","og_type":"article","og_title":"How to iterate over folders in Golang?","og_description":"Learn about how to iterate over folders in golang?. Comprehensive guide with examples and best practices.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T11:19:44+00:00","article_modified_time":"2025-08-06T19:17:39+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-to-iterate-over-folders-in-golang\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/"},"author":{"name":"William Carter","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0"},"headline":"How to iterate over folders in Golang?","datePublished":"2024-03-15T11:19:44+00:00","dateModified":"2025-08-06T19:17:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/"},"wordCount":101,"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-to-iterate-over-folders-in-golang\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/","name":"How to iterate over folders in Golang? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T11:19:44+00:00","dateModified":"2025-08-06T19:17:39+00:00","description":"Learn about how to iterate over folders in golang?. Comprehensive guide with examples and best practices.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-iterate-over-folders-in-golang\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to iterate over folders in Golang?"}]},{"@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\/15518","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=15518"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/15518\/revisions"}],"predecessor-version":[{"id":48991,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/15518\/revisions\/48991"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=15518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=15518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=15518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}