Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
197 lines (108 sloc) 2.88 KB
Go is Awesome
(and you should be using it)
Caleb Spare
* This talk will not teach you Go
But I hope you're interested to learn more afterwards.
This talk will include:
- A brief intro to the language and tools
- Code
- Demos
- Gophers
(Examples and info borrowed from Andrew Gerrand, Brad Fitzpatric, and Rob Pike.)
* Overview
* A brief history
- Developed at Google starting in 2007.
- Open-sourced in 2009.
- Original creators: Robert Griesemer, Rob Pike, and Ken Thompson.
- Go now has many contributors both inside and outside of Google.
- March 2012: Go 1 released.
.image images/gopherbw_small.png
* The language
- Statically typed, with type inference
- Generates fast native code
- Compiles _really_ quickly
- Simple and fun
- Has pointers (but none of the dangerous stuff)
- Concurrent
- Garbage-collected
.image images/run.png
* Go is opinionated
- Public/private is determined by initial upper-case letters
- Error handling
- No classes/inheritence
- Aggressive focus on language simplicity and orthogonality of features
- Built to help software engineers, not advance PL research
.image images/talks.png
* Go on everything
Go has a spec, and two separate compilers that implement it.
- The original Go compiler
- So fast
- (x86, x64, ARM) × (Linux, OS X, Windows, FreeBSD, OpenBSD, NetBSD, Plan 9)
- A GCC frontend for Go
- Included in GCC 4.7.1 (released in June)
- Sometimes generates more optimized code
- Supports additional architectures (PPC, MIPS, SPARC, ...) and OSes (Solaris, IRIX, ...)
* Dat tooling
- go
- go get
- gofmt
- gofmt -r
- go test
- gofix
- go vet
- godoc
- gdb
- profiling
- gocode
.image images/project.png
* Code Examples
* Hello, world!
.play hello.go
.image images/doc.png
* Echo server
.play echo.go
* Concurrency
.play concurrency.go /START OMIT/,/END OMIT/
* Demos
* Building go code
Build and run:
go run mycode.go
Just build an executable:
go build mycode.go
Oh, your server is a different platform?
GOARCH=amd64 GOOS=linux go build
.image images/pkg.png
* Your deploy script
scp myserver
.image images/help.png
* Go in the industry
- Google (, youtube,, ...)
- Canonical
- Heroku
- SoundCloud
- Stathat
- Bitly
- Nokia
- BBC Worldwide
- ...
.image images/ref.png
* ...Ooyala?
- Docs:
- hastur-go
- go-ooyala-headers
- Go is already in production! (almost)
.image images/frontpage.png
* Get started!
.link Go Tour
.link Effective Go
.link Go by Example
.link Code Walks
.link Stdlib docs
.link GoPkgDoc
.link Go Playground
.image images/appenginegopher_small.jpg
Something went wrong with that request. Please try again.