content/static/doc: link module blog posts from golang.org/doc

Updates golang/go#33637

Change-Id: I37c81d2358c9b2c7ae11939b3884acea2612ff7d
Reviewed-on: https://go-review.googlesource.com/c/website/+/197640
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/cmd/golangorg/regtest_test.go b/cmd/golangorg/regtest_test.go
index bedb77b..63f5ab6 100644
--- a/cmd/golangorg/regtest_test.go
+++ b/cmd/golangorg/regtest_test.go
@@ -35,6 +35,10 @@
 		StatusCode  int // if 0, expect 2xx status code.
 	}{
 		{
+			Path:      "/doc/",
+			Substring: "an introduction to using modules in a simple project",
+		},
+		{
 			Path:      "/doc/faq",
 			Substring: "What is the purpose of the project",
 		},
diff --git a/content/static/doc/docs.html b/content/static/doc/docs.html
index 8f79d3a..c297f3b 100644
--- a/content/static/doc/docs.html
+++ b/content/static/doc/docs.html
@@ -168,6 +168,13 @@
 <li><a href="/blog/go-image-package">The Go image package</a> - the fundamentals of the <a href="/pkg/image/">image</a> package.</li>
 <li><a href="/blog/go-imagedraw-package">The Go image/draw package</a> - the fundamentals of the <a href="/pkg/image/draw/">image/draw</a> package.</li>
 </ul>
+
+<h4>Modules</h4>
+<ul>
+<li><a href="/blog/using-go-modules">Using Go Modules</a> - an introduction to using modules in a simple project.</li>
+<li><a href="/blog/migrating-to-go-modules">Migrating to Go Modules</a> - converting an existing project to use modules.</li>
+<li><a href="/blog/publishing-go-modules">Publishing Go Modules</a> - how to make new versions of modules available to others.</li>
+</ul>
 {{end}}
 
 <h4>Tools</h4>
diff --git a/content/static/static.go b/content/static/static.go
index a135f16..1b2072a 100644
--- a/content/static/static.go
+++ b/content/static/static.go
@@ -47,7 +47,7 @@
 
 	"doc/copyright.html": "<!--{\x0a\x09\"Title\":\x20\"Copyright\"\x0a}-->\x0a\x0a<p>\x0a\x20\x20Except\x20as\x0a\x20\x20<a\x20href=\"https://developers.google.com/site-policies#restrictions\">noted</a>,\x20the\x20contents\x20of\x20this\x0a\x20\x20site\x20are\x20licensed\x20under\x20the\x0a\x20\x20<a\x20href=\"https://creativecommons.org/licenses/by/3.0/\">Creative\x20Commons\x20Attribution\x203.0\x20License</a>,\x0a\x20\x20and\x20code\x20is\x20licensed\x20under\x20a\x20<a\x20href=\"/LICENSE\">BSD\x20license</a>.\x0a</p>\x0a",
 
-	"doc/docs.html": "<!--{\x0a\x09\"Title\":\x20\"Documentation\",\x0a\x09\"Path\":\x20\"/doc/\",\x0a\x09\"Template\":\x20true\x0a}-->\x0a\x0a<p>\x0aThe\x20Go\x20programming\x20language\x20is\x20an\x20open\x20source\x20project\x20to\x20make\x20programmers\x20more\x0aproductive.\x0a</p>\x0a\x0a<p>\x0aGo\x20is\x20expressive,\x20concise,\x20clean,\x20and\x20efficient.\x20Its\x20concurrency\x0amechanisms\x20make\x20it\x20easy\x20to\x20write\x20programs\x20that\x20get\x20the\x20most\x20out\x20of\x20multicore\x0aand\x20networked\x20machines,\x20while\x20its\x20novel\x20type\x20system\x20enables\x20flexible\x20and\x0amodular\x20program\x20construction.\x20Go\x20compiles\x20quickly\x20to\x20machine\x20code\x20yet\x20has\x20the\x0aconvenience\x20of\x20garbage\x20collection\x20and\x20the\x20power\x20of\x20run-time\x20reflection.\x20It's\x20a\x0afast,\x20statically\x20typed,\x20compiled\x20language\x20that\x20feels\x20like\x20a\x20dynamically\x20typed,\x0ainterpreted\x20language.\x0a</p>\x0a\x0a<div\x20id=\"manual-nav\"></div>\x0a\x0a<h2>Installing\x20Go</h2>\x0a\x0a<h3><a\x20href=\"/doc/install\">Getting\x20Started</a></h3>\x0a<p>\x0aInstructions\x20for\x20downloading\x20and\x20installing\x20the\x20Go\x20compilers,\x20tools,\x20and\x0alibraries.\x0a</p>\x0a\x0a\x0a<h2\x20id=\"learning\">Learning\x20Go</h2>\x0a\x0a<img\x20class=\"gopher\"\x20src=\"/doc/gopher/doc.png\"/>\x0a\x0a<h3\x20id=\"go_tour\">\x0a\x09{{if\x20$.GoogleCN}}\x0a\x09\x20\x20A\x20Tour\x20of\x20Go\x0a\x09{{else}}\x0a\x09\x20\x20<a\x20href=\"//tour.golang.org/\">A\x20Tour\x20of\x20Go</a>\x0a\x09{{end}}\x0a</h3>\x0a<p>\x0aAn\x20interactive\x20introduction\x20to\x20Go\x20in\x20three\x20sections.\x0aThe\x20first\x20section\x20covers\x20basic\x20syntax\x20and\x20data\x20structures;\x20the\x20second\x20discusses\x0amethods\x20and\x20interfaces;\x20and\x20the\x20third\x20introduces\x20Go's\x20concurrency\x20primitives.\x0aEach\x20section\x20concludes\x20with\x20a\x20few\x20exercises\x20so\x20you\x20can\x20practice\x20what\x20you've\x0alearned.\x20You\x20can\x20{{if\x20not\x20$.GoogleCN}}<a\x20href=\"//tour.golang.org/\">take\x20the\x20tour\x0aonline</a>\x20or{{end}}\x20install\x20it\x20locally\x20with:\x0a</p>\x0a<pre>\x0a$\x20go\x20get\x20golang.org/x/tour\x0a</pre>\x0a<p>\x0aThis\x20will\x20place\x20the\x20<code>tour</code>\x20binary\x20in\x20your\x20workspace's\x20<code>bin</code>\x20directory.\x0a</p>\x0a\x0a<h3\x20id=\"code\"><a\x20href=\"code.html\">How\x20to\x20write\x20Go\x20code</a></h3>\x0a<p>\x0a{{if\x20not\x20$.GoogleCN}}\x0aAlso\x20available\x20as\x20a\x20<a\x20href=\"//www.youtube.com/watch?v=XCsL89YtqCs\">screencast</a>,\x20this\x0a{{else}}\x0aThis\x0a{{end}}\x0adoc\x20explains\x20how\x20to\x20use\x20the\x20<a\x20href=\"/cmd/go/\">go\x20command</a>\x0ato\x20fetch,\x20build,\x20and\x20install\x20packages,\x20commands,\x20and\x20run\x20tests.\x0a</p>\x0a\x0a<h3\x20id=\"editors\"><a\x20href=\"editors.html\">Editor\x20plugins\x20and\x20IDEs</a></h3>\x0a<p>\x0aA\x20document\x20that\x20summarizes\x20commonly\x20used\x20editor\x20plugins\x20and\x20IDEs\x20with\x0aGo\x20support.\x0a</p>\x0a\x0a<h3\x20id=\"effective_go\"><a\x20href=\"effective_go.html\">Effective\x20Go</a></h3>\x0a<p>\x0aA\x20document\x20that\x20gives\x20tips\x20for\x20writing\x20clear,\x20idiomatic\x20Go\x20code.\x0aA\x20must\x20read\x20for\x20any\x20new\x20Go\x20programmer.\x20It\x20augments\x20the\x20tour\x20and\x0athe\x20language\x20specification,\x20both\x20of\x20which\x20should\x20be\x20read\x20first.\x0a</p>\x0a\x0a<h3\x20id=\"diagnostics\"><a\x20href=\"/doc/diagnostics.html\">Diagnostics</a></h3>\x0a<p>\x0aSummarizes\x20tools\x20and\x20methodologies\x20to\x20diagnose\x20problems\x20in\x20Go\x20programs.\x0a</p>\x0a\x0a<h3\x20id=\"faq\"><a\x20href=\"/doc/faq\">Frequently\x20Asked\x20Questions\x20(FAQ)</a></h3>\x0a<p>\x0aAnswers\x20to\x20common\x20questions\x20about\x20Go.\x0a</p>\x0a\x0a<h3\x20id=\"wiki\"><a\x20href=\"/wiki\">The\x20Go\x20Wiki</a></h3>\x0a<p>A\x20wiki\x20maintained\x20by\x20the\x20Go\x20community.</p>\x0a\x0a<h4\x20id=\"learn_more\">More</h4>\x0a<p>\x0aSee\x20the\x20<a\x20href=\"/wiki/Learn\">Learn</a>\x20page\x20at\x20the\x20<a\x20href=\"/wiki\">Wiki</a>\x0afor\x20more\x20Go\x20learning\x20resources.\x0a</p>\x0a\x0a\x0a<h2\x20id=\"references\">References</h2>\x0a\x0a<h3\x20id=\"pkg\"><a\x20href=\"/pkg/\">Package\x20Documentation</a></h3>\x0a<p>\x0aThe\x20documentation\x20for\x20the\x20Go\x20standard\x20library.\x0a</p>\x0a\x0a<h3\x20id=\"cmd\"><a\x20href=\"/doc/cmd\">Command\x20Documentation</a></h3>\x0a<p>\x0aThe\x20documentation\x20for\x20the\x20Go\x20tools.\x0a</p>\x0a\x0a<h3\x20id=\"spec\"><a\x20href=\"/ref/spec\">Language\x20Specification</a></h3>\x0a<p>\x0aThe\x20official\x20Go\x20Language\x20specification.\x0a</p>\x0a\x0a<h3\x20id=\"go_mem\"><a\x20href=\"/ref/mem\">The\x20Go\x20Memory\x20Model</a></h3>\x0a<p>\x0aA\x20document\x20that\x20specifies\x20the\x20conditions\x20under\x20which\x20reads\x20of\x20a\x20variable\x20in\x0aone\x20goroutine\x20can\x20be\x20guaranteed\x20to\x20observe\x20values\x20produced\x20by\x20writes\x20to\x20the\x0asame\x20variable\x20in\x20a\x20different\x20goroutine.\x0a</p>\x0a\x0a<h3\x20id=\"release\"><a\x20href=\"/doc/devel/release.html\">Release\x20History</a></h3>\x0a<p>A\x20summary\x20of\x20the\x20changes\x20between\x20Go\x20releases.</p>\x0a\x0a\x0a<h2\x20id=\"articles\">Articles</h2>\x0a\x0a{{if\x20not\x20$.GoogleCN}}\x0a<h3\x20id=\"blog\"><a\x20href=\"//blog.golang.org/\">The\x20Go\x20Blog</a></h3>\x0a<p>The\x20official\x20blog\x20of\x20the\x20Go\x20project,\x20featuring\x20news\x20and\x20in-depth\x20articles\x20by\x0athe\x20Go\x20team\x20and\x20guests.</p>\x0a{{end}}\x0a\x0a<h4>Codewalks</h4>\x0a<p>\x0aGuided\x20tours\x20of\x20Go\x20programs.\x0a</p>\x0a<ul>\x0a<li><a\x20href=\"/doc/codewalk/functions\">First-Class\x20Functions\x20in\x20Go</a></li>\x0a<li><a\x20href=\"/doc/codewalk/markov\">Generating\x20arbitrary\x20text:\x20a\x20Markov\x20chain\x20algorithm</a></li>\x0a<li><a\x20href=\"/doc/codewalk/sharemem\">Share\x20Memory\x20by\x20Communicating</a></li>\x0a<li><a\x20href=\"/doc/articles/wiki/\">Writing\x20Web\x20Applications</a>\x20-\x20building\x20a\x20simple\x20web\x20application.</li>\x0a</ul>\x0a\x0a{{if\x20not\x20$.GoogleCN}}\x0a<h4>Language</h4>\x0a<ul>\x0a<li><a\x20href=\"/blog/json-rpc-tale-of-interfaces\">JSON-RPC:\x20a\x20tale\x20of\x20interfaces</a></li>\x0a<li><a\x20href=\"/blog/gos-declaration-syntax\">Go's\x20Declaration\x20Syntax</a></li>\x0a<li><a\x20href=\"/blog/defer-panic-and-recover\">Defer,\x20Panic,\x20and\x20Recover</a></li>\x0a<li><a\x20href=\"/blog/go-concurrency-patterns-timing-out-and\">Go\x20Concurrency\x20Patterns:\x20Timing\x20out,\x20moving\x20on</a></li>\x0a<li><a\x20href=\"/blog/go-slices-usage-and-internals\">Go\x20Slices:\x20usage\x20and\x20internals</a></li>\x0a<li><a\x20href=\"/blog/gif-decoder-exercise-in-go-interfaces\">A\x20GIF\x20decoder:\x20an\x20exercise\x20in\x20Go\x20interfaces</a></li>\x0a<li><a\x20href=\"/blog/error-handling-and-go\">Error\x20Handling\x20and\x20Go</a></li>\x0a<li><a\x20href=\"/blog/organizing-go-code\">Organizing\x20Go\x20code</a></li>\x0a</ul>\x0a\x0a<h4>Packages</h4>\x0a<ul>\x0a<li><a\x20href=\"/blog/json-and-go\">JSON\x20and\x20Go</a>\x20-\x20using\x20the\x20<a\x20href=\"/pkg/encoding/json/\">json</a>\x20package.</li>\x0a<li><a\x20href=\"/blog/gobs-of-data\">Gobs\x20of\x20data</a>\x20-\x20the\x20design\x20and\x20use\x20of\x20the\x20<a\x20href=\"/pkg/encoding/gob/\">gob</a>\x20package.</li>\x0a<li><a\x20href=\"/blog/laws-of-reflection\">The\x20Laws\x20of\x20Reflection</a>\x20-\x20the\x20fundamentals\x20of\x20the\x20<a\x20href=\"/pkg/reflect/\">reflect</a>\x20package.</li>\x0a<li><a\x20href=\"/blog/go-image-package\">The\x20Go\x20image\x20package</a>\x20-\x20the\x20fundamentals\x20of\x20the\x20<a\x20href=\"/pkg/image/\">image</a>\x20package.</li>\x0a<li><a\x20href=\"/blog/go-imagedraw-package\">The\x20Go\x20image/draw\x20package</a>\x20-\x20the\x20fundamentals\x20of\x20the\x20<a\x20href=\"/pkg/image/draw/\">image/draw</a>\x20package.</li>\x0a</ul>\x0a{{end}}\x0a\x0a<h4>Tools</h4>\x0a<ul>\x0a<li><a\x20href=\"/doc/articles/go_command.html\">About\x20the\x20Go\x20command</a>\x20-\x20why\x20we\x20wrote\x20it,\x20what\x20it\x20is,\x20what\x20it's\x20not,\x20and\x20how\x20to\x20use\x20it.</li>\x0a<li><a\x20href=\"/doc/gdb\">Debugging\x20Go\x20Code\x20with\x20GDB</a></li>\x0a<li><a\x20href=\"/doc/articles/race_detector.html\">Data\x20Race\x20Detector</a>\x20-\x20a\x20manual\x20for\x20the\x20data\x20race\x20detector.</li>\x0a<li><a\x20href=\"/doc/asm\">A\x20Quick\x20Guide\x20to\x20Go's\x20Assembler</a>\x20-\x20an\x20introduction\x20to\x20the\x20assembler\x20used\x20by\x20Go.</li>\x0a{{if\x20not\x20$.GoogleCN}}\x0a<li><a\x20href=\"/blog/c-go-cgo\">C?\x20Go?\x20Cgo!</a>\x20-\x20linking\x20against\x20C\x20code\x20with\x20<a\x20href=\"/cmd/cgo/\">cgo</a>.</li>\x0a<li><a\x20href=\"/blog/godoc-documenting-go-code\">Godoc:\x20documenting\x20Go\x20code</a>\x20-\x20writing\x20good\x20documentation\x20for\x20<a\x20href=\"/cmd/godoc/\">godoc</a>.</li>\x0a<li><a\x20href=\"/blog/profiling-go-programs\">Profiling\x20Go\x20Programs</a></li>\x0a<li><a\x20href=\"/blog/race-detector\">Introducing\x20the\x20Go\x20Race\x20Detector</a>\x20-\x20an\x20introduction\x20to\x20the\x20race\x20detector.</li>\x0a{{end}}\x0a</ul>\x0a\x0a<h4\x20id=\"articles_more\">More</h4>\x0a<p>\x0aSee\x20the\x20<a\x20href=\"/wiki/Articles\">Articles\x20page</a>\x20at\x20the\x0a<a\x20href=\"/wiki\">Wiki</a>\x20for\x20more\x20Go\x20articles.\x0a</p>\x0a\x0a{{if\x20not\x20$.GoogleCN}}\x0a<h2\x20id=\"talks\">Talks</h2>\x0a\x0a<img\x20class=\"gopher\"\x20src=\"/doc/gopher/talks.png\"/>\x0a\x0a<h3\x20id=\"video_tour_of_go\"><a\x20href=\"https://research.swtch.com/gotour\">A\x20Video\x20Tour\x20of\x20Go</a></h3>\x0a<p>\x0aThree\x20things\x20that\x20make\x20Go\x20fast,\x20fun,\x20and\x20productive:\x0ainterfaces,\x20reflection,\x20and\x20concurrency.\x20Builds\x20a\x20toy\x20web\x20crawler\x20to\x0ademonstrate\x20these.\x0a</p>\x0a\x0a<h3\x20id=\"go_code_that_grows\"><a\x20href=\"//vimeo.com/53221560\">Code\x20that\x20grows\x20with\x20grace</a></h3>\x0a<p>\x0aOne\x20of\x20Go's\x20key\x20design\x20goals\x20is\x20code\x20adaptability;\x20that\x20it\x20should\x20be\x20easy\x20to\x20take\x20a\x20simple\x20design\x20and\x20build\x20upon\x20it\x20in\x20a\x20clean\x20and\x20natural\x20way.\x20In\x20this\x20talk\x20Andrew\x20Gerrand\x20describes\x20a\x20simple\x20\"chat\x20roulette\"\x20server\x20that\x20matches\x20pairs\x20of\x20incoming\x20TCP\x20connections,\x20and\x20then\x20use\x20Go's\x20concurrency\x20mechanisms,\x20interfaces,\x20and\x20standard\x20library\x20to\x20extend\x20it\x20with\x20a\x20web\x20interface\x20and\x20other\x20features.\x20While\x20the\x20function\x20of\x20the\x20program\x20changes\x20dramatically,\x20Go's\x20flexibility\x20preserves\x20the\x20original\x20design\x20as\x20it\x20grows.\x0a</p>\x0a\x0a<h3\x20id=\"go_concurrency_patterns\"><a\x20href=\"//www.youtube.com/watch?v=f6kdp27TYZs\">Go\x20Concurrency\x20Patterns</a></h3>\x0a<p>\x0aConcurrency\x20is\x20the\x20key\x20to\x20designing\x20high\x20performance\x20network\x20services.\x20Go's\x20concurrency\x20primitives\x20(goroutines\x20and\x20channels)\x20provide\x20a\x20simple\x20and\x20efficient\x20means\x20of\x20expressing\x20concurrent\x20execution.\x20In\x20this\x20talk\x20we\x20see\x20how\x20tricky\x20concurrency\x20problems\x20can\x20be\x20solved\x20gracefully\x20with\x20simple\x20Go\x20code.\x0a</p>\x0a\x0a<h3\x20id=\"advanced_go_concurrency_patterns\"><a\x20href=\"//www.youtube.com/watch?v=QDDwwePbDtw\">Advanced\x20Go\x20Concurrency\x20Patterns</a></h3>\x0a<p>\x0aThis\x20talk\x20expands\x20on\x20the\x20<i>Go\x20Concurrency\x20Patterns</i>\x20talk\x20to\x20dive\x20deeper\x20into\x20Go's\x20concurrency\x20primitives.\x0a</p>\x0a\x0a<h4\x20id=\"talks_more\">More</h4>\x0a<p>\x0aSee\x20the\x20<a\x20href=\"/talks\">Go\x20Talks\x20site</a>\x20and\x20<a\x20href=\"/wiki/GoTalks\">wiki\x20page</a>\x20for\x20more\x20Go\x20talks.\x0a</p>\x0a{{end}}\x0a\x0a<h2\x20id=\"nonenglish\">Non-English\x20Documentation</h2>\x0a\x0a<p>\x0aSee\x20the\x20<a\x20href=\"/wiki/NonEnglish\">NonEnglish</a>\x20page\x0aat\x20the\x20<a\x20href=\"/wiki\">Wiki</a>\x20for\x20localized\x0adocumentation.\x0a</p>\x0a",
+	"doc/docs.html": "<!--{\x0a\x09\"Title\":\x20\"Documentation\",\x0a\x09\"Path\":\x20\"/doc/\",\x0a\x09\"Template\":\x20true\x0a}-->\x0a\x0a<p>\x0aThe\x20Go\x20programming\x20language\x20is\x20an\x20open\x20source\x20project\x20to\x20make\x20programmers\x20more\x0aproductive.\x0a</p>\x0a\x0a<p>\x0aGo\x20is\x20expressive,\x20concise,\x20clean,\x20and\x20efficient.\x20Its\x20concurrency\x0amechanisms\x20make\x20it\x20easy\x20to\x20write\x20programs\x20that\x20get\x20the\x20most\x20out\x20of\x20multicore\x0aand\x20networked\x20machines,\x20while\x20its\x20novel\x20type\x20system\x20enables\x20flexible\x20and\x0amodular\x20program\x20construction.\x20Go\x20compiles\x20quickly\x20to\x20machine\x20code\x20yet\x20has\x20the\x0aconvenience\x20of\x20garbage\x20collection\x20and\x20the\x20power\x20of\x20run-time\x20reflection.\x20It's\x20a\x0afast,\x20statically\x20typed,\x20compiled\x20language\x20that\x20feels\x20like\x20a\x20dynamically\x20typed,\x0ainterpreted\x20language.\x0a</p>\x0a\x0a<div\x20id=\"manual-nav\"></div>\x0a\x0a<h2>Installing\x20Go</h2>\x0a\x0a<h3><a\x20href=\"/doc/install\">Getting\x20Started</a></h3>\x0a<p>\x0aInstructions\x20for\x20downloading\x20and\x20installing\x20the\x20Go\x20compilers,\x20tools,\x20and\x0alibraries.\x0a</p>\x0a\x0a\x0a<h2\x20id=\"learning\">Learning\x20Go</h2>\x0a\x0a<img\x20class=\"gopher\"\x20src=\"/doc/gopher/doc.png\"/>\x0a\x0a<h3\x20id=\"go_tour\">\x0a\x09{{if\x20$.GoogleCN}}\x0a\x09\x20\x20A\x20Tour\x20of\x20Go\x0a\x09{{else}}\x0a\x09\x20\x20<a\x20href=\"//tour.golang.org/\">A\x20Tour\x20of\x20Go</a>\x0a\x09{{end}}\x0a</h3>\x0a<p>\x0aAn\x20interactive\x20introduction\x20to\x20Go\x20in\x20three\x20sections.\x0aThe\x20first\x20section\x20covers\x20basic\x20syntax\x20and\x20data\x20structures;\x20the\x20second\x20discusses\x0amethods\x20and\x20interfaces;\x20and\x20the\x20third\x20introduces\x20Go's\x20concurrency\x20primitives.\x0aEach\x20section\x20concludes\x20with\x20a\x20few\x20exercises\x20so\x20you\x20can\x20practice\x20what\x20you've\x0alearned.\x20You\x20can\x20{{if\x20not\x20$.GoogleCN}}<a\x20href=\"//tour.golang.org/\">take\x20the\x20tour\x0aonline</a>\x20or{{end}}\x20install\x20it\x20locally\x20with:\x0a</p>\x0a<pre>\x0a$\x20go\x20get\x20golang.org/x/tour\x0a</pre>\x0a<p>\x0aThis\x20will\x20place\x20the\x20<code>tour</code>\x20binary\x20in\x20your\x20workspace's\x20<code>bin</code>\x20directory.\x0a</p>\x0a\x0a<h3\x20id=\"code\"><a\x20href=\"code.html\">How\x20to\x20write\x20Go\x20code</a></h3>\x0a<p>\x0a{{if\x20not\x20$.GoogleCN}}\x0aAlso\x20available\x20as\x20a\x20<a\x20href=\"//www.youtube.com/watch?v=XCsL89YtqCs\">screencast</a>,\x20this\x0a{{else}}\x0aThis\x0a{{end}}\x0adoc\x20explains\x20how\x20to\x20use\x20the\x20<a\x20href=\"/cmd/go/\">go\x20command</a>\x0ato\x20fetch,\x20build,\x20and\x20install\x20packages,\x20commands,\x20and\x20run\x20tests.\x0a</p>\x0a\x0a<h3\x20id=\"editors\"><a\x20href=\"editors.html\">Editor\x20plugins\x20and\x20IDEs</a></h3>\x0a<p>\x0aA\x20document\x20that\x20summarizes\x20commonly\x20used\x20editor\x20plugins\x20and\x20IDEs\x20with\x0aGo\x20support.\x0a</p>\x0a\x0a<h3\x20id=\"effective_go\"><a\x20href=\"effective_go.html\">Effective\x20Go</a></h3>\x0a<p>\x0aA\x20document\x20that\x20gives\x20tips\x20for\x20writing\x20clear,\x20idiomatic\x20Go\x20code.\x0aA\x20must\x20read\x20for\x20any\x20new\x20Go\x20programmer.\x20It\x20augments\x20the\x20tour\x20and\x0athe\x20language\x20specification,\x20both\x20of\x20which\x20should\x20be\x20read\x20first.\x0a</p>\x0a\x0a<h3\x20id=\"diagnostics\"><a\x20href=\"/doc/diagnostics.html\">Diagnostics</a></h3>\x0a<p>\x0aSummarizes\x20tools\x20and\x20methodologies\x20to\x20diagnose\x20problems\x20in\x20Go\x20programs.\x0a</p>\x0a\x0a<h3\x20id=\"faq\"><a\x20href=\"/doc/faq\">Frequently\x20Asked\x20Questions\x20(FAQ)</a></h3>\x0a<p>\x0aAnswers\x20to\x20common\x20questions\x20about\x20Go.\x0a</p>\x0a\x0a<h3\x20id=\"wiki\"><a\x20href=\"/wiki\">The\x20Go\x20Wiki</a></h3>\x0a<p>A\x20wiki\x20maintained\x20by\x20the\x20Go\x20community.</p>\x0a\x0a<h4\x20id=\"learn_more\">More</h4>\x0a<p>\x0aSee\x20the\x20<a\x20href=\"/wiki/Learn\">Learn</a>\x20page\x20at\x20the\x20<a\x20href=\"/wiki\">Wiki</a>\x0afor\x20more\x20Go\x20learning\x20resources.\x0a</p>\x0a\x0a\x0a<h2\x20id=\"references\">References</h2>\x0a\x0a<h3\x20id=\"pkg\"><a\x20href=\"/pkg/\">Package\x20Documentation</a></h3>\x0a<p>\x0aThe\x20documentation\x20for\x20the\x20Go\x20standard\x20library.\x0a</p>\x0a\x0a<h3\x20id=\"cmd\"><a\x20href=\"/doc/cmd\">Command\x20Documentation</a></h3>\x0a<p>\x0aThe\x20documentation\x20for\x20the\x20Go\x20tools.\x0a</p>\x0a\x0a<h3\x20id=\"spec\"><a\x20href=\"/ref/spec\">Language\x20Specification</a></h3>\x0a<p>\x0aThe\x20official\x20Go\x20Language\x20specification.\x0a</p>\x0a\x0a<h3\x20id=\"go_mem\"><a\x20href=\"/ref/mem\">The\x20Go\x20Memory\x20Model</a></h3>\x0a<p>\x0aA\x20document\x20that\x20specifies\x20the\x20conditions\x20under\x20which\x20reads\x20of\x20a\x20variable\x20in\x0aone\x20goroutine\x20can\x20be\x20guaranteed\x20to\x20observe\x20values\x20produced\x20by\x20writes\x20to\x20the\x0asame\x20variable\x20in\x20a\x20different\x20goroutine.\x0a</p>\x0a\x0a<h3\x20id=\"release\"><a\x20href=\"/doc/devel/release.html\">Release\x20History</a></h3>\x0a<p>A\x20summary\x20of\x20the\x20changes\x20between\x20Go\x20releases.</p>\x0a\x0a\x0a<h2\x20id=\"articles\">Articles</h2>\x0a\x0a{{if\x20not\x20$.GoogleCN}}\x0a<h3\x20id=\"blog\"><a\x20href=\"//blog.golang.org/\">The\x20Go\x20Blog</a></h3>\x0a<p>The\x20official\x20blog\x20of\x20the\x20Go\x20project,\x20featuring\x20news\x20and\x20in-depth\x20articles\x20by\x0athe\x20Go\x20team\x20and\x20guests.</p>\x0a{{end}}\x0a\x0a<h4>Codewalks</h4>\x0a<p>\x0aGuided\x20tours\x20of\x20Go\x20programs.\x0a</p>\x0a<ul>\x0a<li><a\x20href=\"/doc/codewalk/functions\">First-Class\x20Functions\x20in\x20Go</a></li>\x0a<li><a\x20href=\"/doc/codewalk/markov\">Generating\x20arbitrary\x20text:\x20a\x20Markov\x20chain\x20algorithm</a></li>\x0a<li><a\x20href=\"/doc/codewalk/sharemem\">Share\x20Memory\x20by\x20Communicating</a></li>\x0a<li><a\x20href=\"/doc/articles/wiki/\">Writing\x20Web\x20Applications</a>\x20-\x20building\x20a\x20simple\x20web\x20application.</li>\x0a</ul>\x0a\x0a{{if\x20not\x20$.GoogleCN}}\x0a<h4>Language</h4>\x0a<ul>\x0a<li><a\x20href=\"/blog/json-rpc-tale-of-interfaces\">JSON-RPC:\x20a\x20tale\x20of\x20interfaces</a></li>\x0a<li><a\x20href=\"/blog/gos-declaration-syntax\">Go's\x20Declaration\x20Syntax</a></li>\x0a<li><a\x20href=\"/blog/defer-panic-and-recover\">Defer,\x20Panic,\x20and\x20Recover</a></li>\x0a<li><a\x20href=\"/blog/go-concurrency-patterns-timing-out-and\">Go\x20Concurrency\x20Patterns:\x20Timing\x20out,\x20moving\x20on</a></li>\x0a<li><a\x20href=\"/blog/go-slices-usage-and-internals\">Go\x20Slices:\x20usage\x20and\x20internals</a></li>\x0a<li><a\x20href=\"/blog/gif-decoder-exercise-in-go-interfaces\">A\x20GIF\x20decoder:\x20an\x20exercise\x20in\x20Go\x20interfaces</a></li>\x0a<li><a\x20href=\"/blog/error-handling-and-go\">Error\x20Handling\x20and\x20Go</a></li>\x0a<li><a\x20href=\"/blog/organizing-go-code\">Organizing\x20Go\x20code</a></li>\x0a</ul>\x0a\x0a<h4>Packages</h4>\x0a<ul>\x0a<li><a\x20href=\"/blog/json-and-go\">JSON\x20and\x20Go</a>\x20-\x20using\x20the\x20<a\x20href=\"/pkg/encoding/json/\">json</a>\x20package.</li>\x0a<li><a\x20href=\"/blog/gobs-of-data\">Gobs\x20of\x20data</a>\x20-\x20the\x20design\x20and\x20use\x20of\x20the\x20<a\x20href=\"/pkg/encoding/gob/\">gob</a>\x20package.</li>\x0a<li><a\x20href=\"/blog/laws-of-reflection\">The\x20Laws\x20of\x20Reflection</a>\x20-\x20the\x20fundamentals\x20of\x20the\x20<a\x20href=\"/pkg/reflect/\">reflect</a>\x20package.</li>\x0a<li><a\x20href=\"/blog/go-image-package\">The\x20Go\x20image\x20package</a>\x20-\x20the\x20fundamentals\x20of\x20the\x20<a\x20href=\"/pkg/image/\">image</a>\x20package.</li>\x0a<li><a\x20href=\"/blog/go-imagedraw-package\">The\x20Go\x20image/draw\x20package</a>\x20-\x20the\x20fundamentals\x20of\x20the\x20<a\x20href=\"/pkg/image/draw/\">image/draw</a>\x20package.</li>\x0a</ul>\x0a\x0a<h4>Modules</h4>\x0a<ul>\x0a<li><a\x20href=\"/blog/using-go-modules\">Using\x20Go\x20Modules</a>\x20-\x20an\x20introduction\x20to\x20using\x20modules\x20in\x20a\x20simple\x20project.</li>\x0a<li><a\x20href=\"/blog/migrating-to-go-modules\">Migrating\x20to\x20Go\x20Modules</a>\x20-\x20converting\x20an\x20existing\x20project\x20to\x20use\x20modules.</li>\x0a<li><a\x20href=\"/blog/publishing-go-modules\">Publishing\x20Go\x20Modules</a>\x20-\x20how\x20to\x20make\x20new\x20versions\x20of\x20modules\x20available\x20to\x20others.</li>\x0a</ul>\x0a{{end}}\x0a\x0a<h4>Tools</h4>\x0a<ul>\x0a<li><a\x20href=\"/doc/articles/go_command.html\">About\x20the\x20Go\x20command</a>\x20-\x20why\x20we\x20wrote\x20it,\x20what\x20it\x20is,\x20what\x20it's\x20not,\x20and\x20how\x20to\x20use\x20it.</li>\x0a<li><a\x20href=\"/doc/gdb\">Debugging\x20Go\x20Code\x20with\x20GDB</a></li>\x0a<li><a\x20href=\"/doc/articles/race_detector.html\">Data\x20Race\x20Detector</a>\x20-\x20a\x20manual\x20for\x20the\x20data\x20race\x20detector.</li>\x0a<li><a\x20href=\"/doc/asm\">A\x20Quick\x20Guide\x20to\x20Go's\x20Assembler</a>\x20-\x20an\x20introduction\x20to\x20the\x20assembler\x20used\x20by\x20Go.</li>\x0a{{if\x20not\x20$.GoogleCN}}\x0a<li><a\x20href=\"/blog/c-go-cgo\">C?\x20Go?\x20Cgo!</a>\x20-\x20linking\x20against\x20C\x20code\x20with\x20<a\x20href=\"/cmd/cgo/\">cgo</a>.</li>\x0a<li><a\x20href=\"/blog/godoc-documenting-go-code\">Godoc:\x20documenting\x20Go\x20code</a>\x20-\x20writing\x20good\x20documentation\x20for\x20<a\x20href=\"/cmd/godoc/\">godoc</a>.</li>\x0a<li><a\x20href=\"/blog/profiling-go-programs\">Profiling\x20Go\x20Programs</a></li>\x0a<li><a\x20href=\"/blog/race-detector\">Introducing\x20the\x20Go\x20Race\x20Detector</a>\x20-\x20an\x20introduction\x20to\x20the\x20race\x20detector.</li>\x0a{{end}}\x0a</ul>\x0a\x0a<h4\x20id=\"articles_more\">More</h4>\x0a<p>\x0aSee\x20the\x20<a\x20href=\"/wiki/Articles\">Articles\x20page</a>\x20at\x20the\x0a<a\x20href=\"/wiki\">Wiki</a>\x20for\x20more\x20Go\x20articles.\x0a</p>\x0a\x0a{{if\x20not\x20$.GoogleCN}}\x0a<h2\x20id=\"talks\">Talks</h2>\x0a\x0a<img\x20class=\"gopher\"\x20src=\"/doc/gopher/talks.png\"/>\x0a\x0a<h3\x20id=\"video_tour_of_go\"><a\x20href=\"https://research.swtch.com/gotour\">A\x20Video\x20Tour\x20of\x20Go</a></h3>\x0a<p>\x0aThree\x20things\x20that\x20make\x20Go\x20fast,\x20fun,\x20and\x20productive:\x0ainterfaces,\x20reflection,\x20and\x20concurrency.\x20Builds\x20a\x20toy\x20web\x20crawler\x20to\x0ademonstrate\x20these.\x0a</p>\x0a\x0a<h3\x20id=\"go_code_that_grows\"><a\x20href=\"//vimeo.com/53221560\">Code\x20that\x20grows\x20with\x20grace</a></h3>\x0a<p>\x0aOne\x20of\x20Go's\x20key\x20design\x20goals\x20is\x20code\x20adaptability;\x20that\x20it\x20should\x20be\x20easy\x20to\x20take\x20a\x20simple\x20design\x20and\x20build\x20upon\x20it\x20in\x20a\x20clean\x20and\x20natural\x20way.\x20In\x20this\x20talk\x20Andrew\x20Gerrand\x20describes\x20a\x20simple\x20\"chat\x20roulette\"\x20server\x20that\x20matches\x20pairs\x20of\x20incoming\x20TCP\x20connections,\x20and\x20then\x20use\x20Go's\x20concurrency\x20mechanisms,\x20interfaces,\x20and\x20standard\x20library\x20to\x20extend\x20it\x20with\x20a\x20web\x20interface\x20and\x20other\x20features.\x20While\x20the\x20function\x20of\x20the\x20program\x20changes\x20dramatically,\x20Go's\x20flexibility\x20preserves\x20the\x20original\x20design\x20as\x20it\x20grows.\x0a</p>\x0a\x0a<h3\x20id=\"go_concurrency_patterns\"><a\x20href=\"//www.youtube.com/watch?v=f6kdp27TYZs\">Go\x20Concurrency\x20Patterns</a></h3>\x0a<p>\x0aConcurrency\x20is\x20the\x20key\x20to\x20designing\x20high\x20performance\x20network\x20services.\x20Go's\x20concurrency\x20primitives\x20(goroutines\x20and\x20channels)\x20provide\x20a\x20simple\x20and\x20efficient\x20means\x20of\x20expressing\x20concurrent\x20execution.\x20In\x20this\x20talk\x20we\x20see\x20how\x20tricky\x20concurrency\x20problems\x20can\x20be\x20solved\x20gracefully\x20with\x20simple\x20Go\x20code.\x0a</p>\x0a\x0a<h3\x20id=\"advanced_go_concurrency_patterns\"><a\x20href=\"//www.youtube.com/watch?v=QDDwwePbDtw\">Advanced\x20Go\x20Concurrency\x20Patterns</a></h3>\x0a<p>\x0aThis\x20talk\x20expands\x20on\x20the\x20<i>Go\x20Concurrency\x20Patterns</i>\x20talk\x20to\x20dive\x20deeper\x20into\x20Go's\x20concurrency\x20primitives.\x0a</p>\x0a\x0a<h4\x20id=\"talks_more\">More</h4>\x0a<p>\x0aSee\x20the\x20<a\x20href=\"/talks\">Go\x20Talks\x20site</a>\x20and\x20<a\x20href=\"/wiki/GoTalks\">wiki\x20page</a>\x20for\x20more\x20Go\x20talks.\x0a</p>\x0a{{end}}\x0a\x0a<h2\x20id=\"nonenglish\">Non-English\x20Documentation</h2>\x0a\x0a<p>\x0aSee\x20the\x20<a\x20href=\"/wiki/NonEnglish\">NonEnglish</a>\x20page\x0aat\x20the\x20<a\x20href=\"/wiki\">Wiki</a>\x20for\x20localized\x0adocumentation.\x0a</p>\x0a",
 
 	"doc/root.html": "<!--{\x0a\x20\x20\"Path\":\x20\"/\",\x0a\x20\x20\"Template\":\x20true\x0a}-->\x0a\x0a<div\x20class=\"HomeContainer\">\x0a\x20\x20<section\x20class=\"HomeSection\x20Hero\">\x0a\x20\x20\x20\x20<h1\x20class=\"Hero-header\">\x0a\x20\x20\x20\x20\x20\x20Go\x20is\x20an\x20open\x20source\x20programming\x20language\x20that\x20makes\x20it\x20easy\x20to\x20build\x0a\x20\x20\x20\x20\x20\x20<strong>simple</strong>,\x20<strong>reliable</strong>,\x20and\x20<strong>efficient</strong>\x20software.\x0a\x20\x20\x20\x20</h1>\x0a\x20\x20\x20\x20<i\x20class=\"Hero-gopher\"></i>\x0a\x20\x20\x20\x20<a\x20href=\"/dl/\"\x20class=\"Button\x20Button--big\x20HeroDownloadButton\">\x0a\x20\x20\x20\x20\x20\x20<img\x20class=\"HeroDownloadButton-image\"\x20src=\"/lib/godoc/images/cloud-download.svg\"\x20alt=\"\">\x0a\x20\x20\x20\x20\x20\x20Download\x20Go\x0a\x20\x20\x20\x20</a>\x0a\x20\x20\x20\x20<p\x20class=\"Hero-description\">\x0a\x20\x20\x20\x20\x20\x20Binary\x20distributions\x20available\x20for<br>\x0a\x20\x20\x20\x20\x20\x20Linux,\x20macOS,\x20Windows,\x20and\x20more.\x0a\x20\x20\x20\x20</p>\x0a\x20\x20</section>\x0a\x0a\x20\x20<section\x20class=\"HomeSection\x20Playground\">\x0a\x20\x20\x20\x20<div\x20class=\"Playground-headerContainer\">\x0a\x20\x20\x20\x20\x20\x20<h2\x20class=\"HomeSection-header\">Try\x20Go</h2>\x0a\x20\x20\x20\x20\x20\x20{{if\x20not\x20$.GoogleCN}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20<a\x20class=\"Playground-popout\x20js-playgroundShareEl\">Open\x20in\x20Playground</a>\x0a\x20\x20\x20\x20\x20\x20{{end}}\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\"Playground-inputContainer\">\x0a\x20\x20\x20\x20\x20\x20<textarea\x20class=\"Playground-input\x20js-playgroundCodeEl\"\x20spellcheck=\"false\"\x20aria-label=\"Try\x20Go\">//\x20You\x20can\x20edit\x20this\x20code!\x0a//\x20Click\x20here\x20and\x20start\x20typing.\x0apackage\x20main\x0a\x0aimport\x20\"fmt\"\x0a\x0afunc\x20main()\x20{\x0a\x20\x20fmt.Println(\"Hello,\x20\xe4\xb8\x96\xe7\x95\x8c\")\x0a}</textarea>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\"Playground-outputContainer\x20js-playgroundOutputEl\">\x0a\x20\x20\x20\x20\x20\x20<pre\x20class=\"Playground-output\"><noscript>Hello,\x20\xe4\xb8\x96\xe7\x95\x8c</noscript></pre>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\"Playground-controls\">\x0a\x20\x20\x20\x20\x20\x20<select\x20class=\"Playground-selectExample\x20js-playgroundToysEl\"\x20aria-label=\"Code\x20examples\">\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\"hello.go\">Hello,\x20World!</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\"life.go\">Conway's\x20Game\x20of\x20Life</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\"fib.go\">Fibonacci\x20Closure</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\"peano.go\">Peano\x20Integers</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\"pi.go\">Concurrent\x20pi</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\"sieve.go\">Concurrent\x20Prime\x20Sieve</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\"solitaire.go\">Peg\x20Solitaire\x20Solver</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\"tree.go\">Tree\x20Comparison</option>\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\"Playground-buttons\">\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\"Button\x20Button--primary\x20js-playgroundRunEl\"\x20title=\"Run\x20this\x20code\x20[shift-enter]\">Run</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\"Playground-secondaryButtons\">\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{if\x20not\x20$.GoogleCN}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\"Button\x20js-playgroundShareEl\"\x20title=\"Share\x20this\x20code\">Share</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<a\x20class=\"Button\x20tour\"\x20href=\"https://tour.golang.org/\"\x20title=\"Playground\x20Go\x20from\x20your\x20browser\">Tour</a>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{end}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</section>\x0a\x0a\x20\x20{{if\x20not\x20$.GoogleCN}}\x0a\x20\x20\x20\x20<section\x20class=\"HomeSection\x20Blog\x20js-blogContainerEl\">\x0a\x20\x20\x20\x20\x20\x20<h2\x20class=\"HomeSection-header\">Featured\x20articles</h2>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\"Blog-footer\x20js-blogFooterEl\"><a\x20class=\"Button\x20Button--primary\"\x20href=\"https://blog.golang.org/\">Read\x20more\x20&gt;</a></div>\x0a\x20\x20\x20\x20</section>\x0a\x0a\x20\x20\x20\x20<section\x20class=\"HomeSection\">\x0a\x20\x20\x20\x20\x20\x20<h2\x20class=\"HomeSection-header\">Featured\x20video</h2>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\"js-videoContainer\"\x20style=\"--aspect-ratio-padding:\x2058.07%;\">\x0a\x20\x20\x20\x20\x20\x20\x20\x20<iframe\x20width=\"415\"\x20height=\"241\"\x20src=\"https://www.youtube.com/embed/cQ7STILAS0M\"\x20frameborder=\"0\"\x20allowfullscreen></iframe>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20{{end}}\x0a</div>\x0a<script>\x0a(function()\x20{\x0a\x20\x20'use\x20strict';\x0a\x0a\x20\x20window.initFuncs.push(function()\x20{\x0a\x20\x20\x20\x20//\x20Set\x20up\x20playground\x20if\x20enabled.\x0a\x20\x20\x20\x20if\x20(window.playground)\x20{\x0a\x20\x20\x20\x20\x20\x20window.playground({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\"codeEl\":\x20\x20\x20\x20\x20\x20\x20\x20\".js-playgroundCodeEl\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\"outputEl\":\x20\x20\x20\x20\x20\x20\".js-playgroundOutputEl\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\"runEl\":\x20\x20\x20\x20\x20\x20\x20\x20\x20\".js-playgroundRunEl\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\"shareEl\":\x20\x20\x20\x20\x20\x20\x20\".js-playgroundShareEl\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\"shareRedirect\":\x20\"//play.golang.org/p/\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\"toysEl\":\x20\x20\x20\x20\x20\x20\x20\x20\".js-playgroundToysEl\"\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20The\x20pre\x20matched\x20below\x20is\x20added\x20by\x20the\x20code\x20above.\x20Style\x20it\x20appropriately.\x0a\x20\x20\x20\x20\x20\x20document.querySelector(\".js-playgroundOutputEl\x20pre\").classList.add(\"Playground-output\");\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20$(\".Playground\").hide();\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x0a\x20\x20{{if\x20not\x20$.GoogleCN}}\x0a\x20\x20\x20\x20function\x20readableTime(t)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20m\x20=\x20[\"January\",\x20\"February\",\x20\"March\",\x20\"April\",\x20\"May\",\x20\"June\",\x20\"July\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\"August\",\x20\"September\",\x20\"October\",\x20\"November\",\x20\"December\"];\x0a\x20\x20\x20\x20\x20\x20var\x20p\x20=\x20t.substring(0,\x20t.indexOf(\"T\")).split(\"-\");\x0a\x20\x20\x20\x20\x20\x20var\x20d\x20=\x20new\x20Date(p[0],\x20p[1]-1,\x20p[2]);\x0a\x20\x20\x20\x20\x20\x20return\x20d.getDate()\x20+\x20\"\x20\"\x20+\x20m[d.getMonth()]\x20+\x20\"\x20\"\x20+\x20d.getFullYear();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20window.feedLoaded\x20=\x20function(result)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20read\x20=\x20document.querySelector(\".js-blogFooterEl\");\x0a\x20\x20\x20\x20\x20\x20for\x20(var\x20i\x20=\x200;\x20i\x20<\x20result.length\x20&&\x20i\x20<\x202;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20entry\x20=\x20result[i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20header\x20=\x20document.createElement(\"h3\");\x0a\x20\x20\x20\x20\x20\x20\x20\x20header.className\x20=\x20\"Blog-title\";\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20titleLink\x20=\x20document.createElement(\"a\");\x0a\x20\x20\x20\x20\x20\x20\x20\x20titleLink.href\x20=\x20entry.Link;\x0a\x20\x20\x20\x20\x20\x20\x20\x20titleLink.rel\x20=\x20\"noopener\";\x0a\x20\x20\x20\x20\x20\x20\x20\x20titleLink.textContent\x20=\x20entry.Title;\x0a\x20\x20\x20\x20\x20\x20\x20\x20header.appendChild(titleLink);\x0a\x20\x20\x20\x20\x20\x20\x20\x20read.parentNode.insertBefore(header,\x20read);\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20extract\x20=\x20document.createElement(\"div\");\x0a\x20\x20\x20\x20\x20\x20\x20\x20extract.className\x20=\x20\"Blog-extract\";\x0a\x20\x20\x20\x20\x20\x20\x20\x20extract.innerHTML\x20=\x20entry.Summary;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Ensure\x20any\x20cross-origin\x20links\x20have\x20rel=noopener\x20set.\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20links\x20=\x20extract.querySelectorAll(\"a\");\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(var\x20j\x20=\x200;\x20j\x20<\x20links.length;\x20j++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20links[j].rel\x20=\x20\"noopener\";\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20links[j].classList.add(\"Blog-link\");\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20read.parentNode.insertBefore(extract,\x20read);\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20when\x20=\x20document.createElement(\"div\");\x0a\x20\x20\x20\x20\x20\x20\x20\x20when.className\x20=\x20\"Blog-when\";\x0a\x20\x20\x20\x20\x20\x20\x20\x20when.textContent\x20=\x20\"Published\x20\"\x20+\x20readableTime(entry.Time);\x0a\x20\x20\x20\x20\x20\x20\x20\x20read.parentNode.insertBefore(when,\x20read);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20window.initFuncs.push(function()\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Load\x20blog\x20feed.\x0a\x20\x20\x20\x20\x20\x20$(\"<script/>\")\x0a\x20\x20\x20\x20\x20\x20\x20\x20.attr(\"src\",\x20\"//blog.golang.org/.json?jsonp=feedLoaded\")\x0a\x20\x20\x20\x20\x20\x20\x20\x20.appendTo(\"body\");\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Set\x20the\x20video\x20at\x20random.\x0a\x20\x20\x20\x20\x20\x20var\x20videos\x20=\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20s:\x20\"https://www.youtube.com/embed/cQ7STILAS0M\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20\"Why\x20Go\x20is\x20Successful\x20by\x20Creator\x20Rob\x20Pike\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20s:\x20\"https://www.youtube.com/embed/0ReKdcpNyQg\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20\"GopherCon\x202015:\x20Robert\x20Griesemer\x20-\x20The\x20Evolution\x20of\x20Go\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20s:\x20\"https://www.youtube.com/embed/sX8r6zATHGU\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20\"Steve\x20Francia\x20-\x20Go:\x20building\x20on\x20the\x20shoulders\x20of\x20giants\x20and\x20stepping\x20on\x20a\x20few\x20toes\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20s:\x20\"https://www.youtube.com/embed/rWJHbh6qO_Y\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20\"Brad\x20Fitzpatrick\x20Go\x201.11\x20and\x20beyond\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20s:\x20\"https://www.youtube.com/embed/bmZNaUcwBt4\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20\"The\x20Why\x20of\x20Go\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20s:\x20\"https://www.youtube.com/embed/0Zbh_vmAKvk\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20\"GopherCon\x202017:\x20Russ\x20Cox\x20-\x20The\x20Future\x20of\x20Go\",\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20];\x0a\x20\x20\x20\x20\x20\x20var\x20v\x20=\x20videos[Math.floor(Math.random()*videos.length)];\x0a\x20\x20\x20\x20\x20\x20$(\".js-videoContainer\x20iframe\").attr(\"src\",\x20v.s).attr(\"title\",\x20v.title);\x0a\x20\x20\x20\x20});\x0a\x20\x20{{end}}\x20{{/*\x20if\x20not\x20.GoogleCN\x20*/}}\x0a})();\x0a</script>\x0a",