# introduction ~ introduction ~ getting-started # basics hello-world values variables mutation literals constants for if-else case arrays sum range floats slices maps nesting functions returns varadic closures recursion defer panic recover pointers new structs fields methods embedding interfaces ok-guards errors ~ comments # concurrency goroutines concurrency channels buffering directions synchronization select timeouts scatter-gather rate-limiting burstable-rate-limiting worker-pool ~ nonblocking-sends-and-receives ~ closing-channels # core libraries sort sort-by-function string-functions string-formatting regexs bytes json ~ typed-json time ~ time-formatting epoch elapsed timers tickers rand number-parsing enumerable urls sha1-hashes ~ base64-encoding # systems file-open file-read file-write command-line-arguments command-line-flags env signals exit spawn exec reading-input users line-filter tcp server # network clients tcp-client http-client http-client-basic https-client ~ streaming-in-http-responses redis postgres ~ mongodb email # web apps http-server-basic http-server-canonical-host http-server-graceful-shutdown http-server-log http-server-middleware http-server-routing http-server-static-dynamic http-server-static-select http-server-static http-server-status-code http-server https-server ~ reading-headers-and-query-params ~ reading-post-bodies ~ streaming-out-responses # shipping go ~ using-gofmt ~ using-godoc ~ publishing-packages ~ deploying-to-heroku ~ deploying-to-appengine