%T An Introduction to Go %A Rick D. Beton %E Peter H. Welch, Frederick R. M. Barnes, Jan F. Broenink, Kevin Chalmers, Jan Bækgaard Pedersen, Adam T. Sampson %B Communicating Process Architectures 2013 %X Go is a new open\-source programming language from a team of Google\[rs]s developers. It provides a modern garbage\-collected runtime that has particular support for concurrency. The pattern for this is based on Hoare\[rs]s CSP, using channels for synchronization and communication, and discouraging the direct sharing of variables. Processes are light\-weight co\-operative threads that the runtime time\-slices onto underlying operating system threads; this allows an application\[rs]s natural concurrency to be expressed as fully as needed by the natural concurrency of the application domain. The presentation provides an overview of Go\[rs]s main features, covering in particular the unusual interfaces and duck\-typing, the reflection and the concurrency. Focussing on concurrency in detail, as an example, a simple web\-crawler application is converted step by step to operate concurrently, and at each stage this allows a particular feature of Go\[rs]s concurrency to be demonstrated.