Go For Pythonistas
Go For Pythonistas
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
Python is awesome!
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
Slow (compared to C)
Migrating code between versions requires
work (ie, py3k)
Threading
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
Why Go?
Great community
Aditya Mukerjee
(@chimeracoder)
Basic Datatypes
Python
Go
int
float
tuple
list
Slice
bytes
[]byte
string
string
dictionary
Aditya Mukerjee
(@chimeracoder)
Syntax
Fairly similar to C
Aditya Mukerjee
(@chimeracoder)
Semicolons!
Aditya Mukerjee
(@chimeracoder)
Declaration
Aditya Mukerjee
(@chimeracoder)
Zero values
Aditya Mukerjee
(@chimeracoder)
Zero values
Go
Zero value
0.0
Slice
nil
string
nil
maps
nil
Channel
nil
Aditya Mukerjee
(@chimeracoder)
Error handling
Advantages:
Disadvantages
Verbose
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
Structs
No inheritance
Aditya Mukerjee
(@chimeracoder)
Initializing structs
Aditya Mukerjee
(@chimeracoder)
Methods
Aditya Mukerjee
(@chimeracoder)
Interfaces
Duck typing: 'If it .look()s like a Duck and .quack()s like a duck, it's
a duck'
If any type provides the methods of an interface, it belongs to the
interface
The method name and signature (with return value) must match
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
Concurrency
Use goroutines/channels
'Don't communicate by sharing memory; share memory by
communicating'
Goroutines are lightweight, green threads which are
multiplexed onto multiple OS threads
Compare to callbacks
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
Package Management
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
List comprehensions
Generics
NumPy/SciPy
The GIL
Just kidding!
Aditya Mukerjee
(@chimeracoder)
Aditya Mukerjee
(@chimeracoder)
Community
#go-nuts
Go NYC Meetup
Aditya Mukerjee
(@chimeracoder)
Further Resources
Effective Go
Aditya Mukerjee
(@chimeracoder)
gojson
https://www.github.com/chimeracoder/gojson
Aditya Mukerjee
(@chimeracoder)
Credits
Aditya Mukerjee
(@chimeracoder)