# introduction ~ introduction ~ getting-started # basics hello-world values variables inline-assignment constants for if-else switch arrays range slices maps functions returns varadic-functions closures recursion defer panic recover pointers new structs struct-fields methods embedding interfaces ok-guards errors ~ 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 # core libraries sorting sorting-by-functions string-functions string-formatting regexs bytes json ~ typed-json time ~ time-formatting epochs measuring-elapsed-time timers tickers random-numbers number-parsing collection-functions 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 sending-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 ~ headers-and-query-params ~ post-bodies ~ streaming-responses # shipping go ~ using-gofmt ~ using-godoc ~ publishing-packages ~ deploying-to-heroku ~ deploying-to-appengine