## introduction introduction ~ getting-started ~ ## basics hello-world values variables inline-assignment constants for if-else switch arrays range slices maps functions multiple-return-values varadic-functions closures recursion defer panic pointers new structs methods embedding interfaces errors ok-guards comments ~ ## concurrency goroutines concurrent-goroutines channels channel-buffering channel-directions synchronization select timeouts scatter-gather rate-limiting worker-pools nonblocking-sends-and-receives ~ closing-channels ~ timers tickers ## core libraries sorting sorting-by-functions collection-functions string-functions string-formatting regexs bytes json typed-json ~ time time-formatting ~ epochs elapsed-time random-numbers number-parsing urls sha1-hashes base64-encoding ~ ## systems libraries reading-files writing-files standard-streams ~ line-filters command-line-arguments command-line-flags environment-variables spawning-processes execing-processes signals exit ## client libraries http-client https-client streaming-in-http-responses ~ redis postgres mongodb ~ sending-email ## web apps hello-web requests ~ responses request-routing request-logging static-content basic-authentication canonical-hosts post-bodies ~ middleware streaming-out-http-responses ~ graceful-shutdown https-servers ## shipping go using-gofmt ~ using-godoc ~ publishing-packages ~ deploying-to-heroku ~ deploying-to-appengine ~