A Short Intro to Go
CS 240 – Fall 2018
Rec. 1
Some Housekeeping
• Make sure you are on Piazza
• Come to OH if you can’t install Go
• Start Assignment 1
• Let us know on the Piazza poll if this recitation is
too basic or advanced
Basic Advanced
You’re not a Business Major
Stop Saving File Versions Like this:
You’re a CS Major – Use Git
COMMAND WHAT IT DOES
git init Start recording changes in this
directory
git add Include this file in the next snapshot
git commit Take a snapshot (commit)
git reset Go back to the last snapshot
(commit)
git checkout a Go to snapshot a
Resources to Learn Git:
https://try.github.io/
Course website (Assignments):
http://web.kaust.edu.sa/Faculty/MarcoCanini/classes/CS240/F18/assig
nments.html
DEMO?
What’s this Weird Language I’ve Never Heard of?
“Go is a
compiled,
concurrent,
statically typed,
garbage-collected
language developed at Google”
- Rob Pike, 2012
Rob Pike is the Jeff Dean of distributed systems. Here’s the article the quote is from: https://talks.golang.org/2012/splash.article
What’s this Weird Language I’ve Never Heard of?
compiled Like C, C++
concurrent Like Erlang
statically typed Like C, C++, Java
garbage-collected Like Java and
Python
Why Not Use Python, Java, C++, etc?
Built for Systems.
Go preserves efficiency but has good abstractions.
Easy multi threading and IO communication.
Develop quickly
Do many things efficiently and at the same time
Seems Google Specific. Who Else Actually Uses it?
Official Self Reported List of Companies that use Go: https://github.com/golang/go/wiki/GoUsers
Why did they Choose Go?
“We built everything in Python because it was
easy,
but now it’s slow. So we switched to Go.”
- Most companies using Go
But How do I Use Go?
Start here:
https://tour.golang.org/list
Didn’t install Go? Use the web IDE:
https://play.golang.org/
Other Resources:
Go for Pythonists
https://talks.golang.org/2013/go4python.slide#1
Go for Distributed Systems
https://talks.golang.org/2013/distsys.slide#1
Official Go Talks
https://github.com/golang/go/wiki/GoTalks
But How do I Use Go?
DEMO
What About Object in Go?
DEMO
Build Software for Any System
go build file.go
Compile an executable for your machine
env GOOS=windows GOARCH=amd64 go build file.go
Compile an executable for Windows with 64 bit processor
DEMO?
Format your Code
COMMAND WHAT IT DOES
go fmt file.go Format the file.go properly
DEMO
Wait, I Have Questions!
Go’s official
“Frequently Asked Questions (FAQ)”
https://golang.org/doc/faq
Some Advice for the Assignments
• Write modular code
• Use comments (even to
yourself)
• Don’t forget go fmt (graded)
• The clearer your code is, the
more we can help with bugs