blob: d98a1389f0b11e6caacaa816ed7aa2913aea655d [file] [log] [blame] [view]
Sameer Ajmani7c9bcc12015-01-08 16:45:32 -05001This page links to resources for learning about server programming in Go. The items are organized into sections by topic.
2
Sameer Ajmanicff97932015-01-09 10:37:29 -05003## Getting Started
4
5- Code [A Tour of Go: Web Servers](http://tour.golang.org/methods/13) and [HTTP Handlers](http://tour.golang.org/methods/14)
Sameer Ajmanib957a952015-01-09 10:38:57 -05006- Read [Writing Web Applications](http://golang.org/doc/articles/wiki/)
Sameer Ajmanicdd0dfa2015-01-12 11:23:54 -05007- Read [LearnConcurrency](LearnConcurrency)
Sameer Ajmani3f686852015-01-09 13:52:59 -05008- Watch [Go: code that grows with grace](http://talks.golang.org/2012/chat.slide#1)
Sameer Ajmani95ff2582015-01-09 10:23:11 -05009
Sameer Ajmani7c9bcc12015-01-08 16:45:32 -050010## Communication
11
12- [Package net/http](http://golang.org/pkg/net/http) provides HTTP client and server implementations.
13- [Package encoding/json](http://golang.org/pkg/encoding/json) implements encoding and decoding of JSON objects as defined in RFC 4627.
14- [Package net/rpc](http://golang.org/pkg/net/rpc) provides access to the exported methods of an object across a network or other I/O connection.
15- [Package os/exec](http://golang.org/pkg/os/exec) runs external commands.
Sameer Ajmani7c9bcc12015-01-08 16:45:32 -050016
17## Presentation
18
19- [Package text/template](http://golang.org/pkg/text/template) implements data-driven templates for generating textual output.
20- [Package http/template](http://golang.org/pkg/html/template) implements data-driven templates for generating HTML output safe against code injection.
21
22## Profiling and Performance
23
Sameer Ajmani7c9bcc12015-01-08 16:45:32 -050024- Read [Profiling Go Programs](http://blog.golang.org/profiling-go-programs)
Sameer Ajmani95ff2582015-01-09 10:23:11 -050025- Read [Arrays, slices (and strings): The mechanics of 'append'](http://blog.golang.org/slices)
26- Read the [Frequently Asked Questions (FAQ)](http://golang.org/doc/faq), especially
27 - [Why does Go perform badly on benchmark X?](http://golang.org/doc/faq#Why_does_Go_perform_badly_on_benchmark_x)
28 - [Why do garbage collection? Won't it be too expensive?](http://golang.org/doc/faq#garbage_collection)
29- [Package bufio](http://golang.org/pkg/bufio) implements buffered I/O.
Sameer Ajmani7c9bcc12015-01-08 16:45:32 -050030- [Package runtime/pprof](http://golang.org/pkg/runtime/pprof) writes runtime profiling data in the format expected by the pprof visualization tool.
31- [Package net/http/pprof](http://golang.org/pkg/net/http/pprof) serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool.
32
33## Tracing, Monitoring, Logging, and Configuration
34
35- [Package expvar](http://golang.org/pkg/expvar) provides a standardized interface to public variables, such as operation counters in servers.
36- [Package flag](http://golang.org/pkg/flag) implements command-line flag parsing.
37- [Package log](http://golang.org/pkg/log) implements a simple logging package.
38- [Package glog](https://github.com/golang/glog) implements logging analogous to the Google-internal C++ INFO/ERROR/V setup.
39
40## Storage
41
42- [Package os](http://golang.org/pkg/os) provides a platform-independent interface to operating system functionality.
43- [Package path/filepath](http://golang.org/pkg/path/filepath) implements utility routines for manipulating filename paths in a way compatible with the target operating system-defined file paths.
44- [Package database/sql](http://golang.org/pkg/database/sql) provides a generic interface around SQL (or SQL-like) databases.
45
46## Platforms
47
48### Google Cloud Platform
49
Sameer Ajmani3cd958d2015-01-09 12:26:49 -050050- Read [Google Cloud Platform: Go Runtime Environment](https://cloud.google.com/appengine/docs/go/)
Sameer Ajmani7c9bcc12015-01-08 16:45:32 -050051- Watch [Go and the Google Cloud Platform](http://blog.golang.org/go-and-google-cloud-platform)
52- Read [Go on App Engine: tools, tests, and concurrency](http://blog.golang.org/appengine-dec2013)
53- Read [Deploying Go servers with Docker](http://blog.golang.org/docker)
Sameer Ajmani42e6ba32015-01-09 08:46:27 -050054- Search packages for [Google Cloud](http://godoc.org/?q=google+cloud) or [gcloud](http://godoc.org/?q=gcloud)
55- Search packages for [App Engine](http://godoc.org/?q=appengine) or [GAE](http://godoc.org/?q=gae)
Sameer Ajmani7c9bcc12015-01-08 16:45:32 -050056
57### Amazon Web Services
58
Sameer Ajmanic32d6d32015-01-29 14:44:46 -050059- The [aws-sdk-go](https://github.com/awslabs/aws-sdk-go) repository provides automatically generated AWS clients in Go. It has [official support](http://aws.amazon.com/blogs/aws/coming-soon-aws-sdk-for-go) from Amazon.
Sameer Ajmani7c9bcc12015-01-08 16:45:32 -050060- [Package goamz](https://wiki.ubuntu.com/goamz) enables Go programs to interact with the Amazon Web Services.
Sameer Ajmanid863b092015-01-09 14:40:10 -050061- Search packages for [AWS](http://godoc.org/?q=aws) or [Amazon services](http://godoc.org/?q=amazon+service)
Sameer Ajmani7c9bcc12015-01-08 16:45:32 -050062
63### Microsoft Azure
64
Sameer Ajmani5df457b2015-01-09 08:47:54 -050065- Microsoft OpenTech's [azure-sdk-for-go](https://github.com/MSOpenTech/azure-sdk-for-go) provides a Golang package that makes it easy to consume and manage Microsoft Azure Services.
Sameer Ajmani42e6ba32015-01-09 08:46:27 -050066- Search packages for [Azure](http://godoc.org/?q=azure)