Happy Go Programing.! A Short Introduction
Jan 28, 2015
Happy Go Programing.!
A Short Introduction
Who am I
Pravin Mishra
Software Engineer @ShepHertz
Working on App42 PaaS (Public Cloud Platform-as-a-Service)
Keep in touch - @pravinmishra88
What is Go?
- Go is a general-purpose language that bridges the gap between efficient statically typed languages and productive dynamic language.
- Go is an open source programming language. Go makes it easy to build simple, reliable, and efficient software.
Go
• Initially developed at Google
• Created by Ken Thompson (Unix), Rob Pike
(Plan 9), and Russ Cox (libtask)
• Development started in 2007
• First release in 2009 (Fairly new!)
Features
● Simple, minimal syntax● Fast compilation times● Easy concurrency support via goroutines● Garbage-collected● A flexible interface system● Statically linked binaries● Simple & Fun!
Language focus
• System programming
• Networked / multi-core
• Fast
• Compatible with C
• Best of static typed language and dynamic typed languages
Hello World
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
Compiled language
$ go build hello.go
$ ls
hello hello.go
$ ./hello
Hello Word
Strong types
func main() {
var str string
var value int
str = "abc"
value = 123
str + value
}
$ go run strong_type.go
prog.go:8: invalid operation: str + value (mismatched types string and int)
[process exited with non-zero status]
Static Typed
// types.go
func main() {
var a string
a = 123
}
$ go run types.go
prog.go:5: cannot use 123 (type int) as type string in assignment
[process exited with non-zero status]
with dynamic casting
package main
import ( "fmt" )
func main() {
a := 123
fmt.Printf("Value of a: %d", a)
}
- Value of a: 123
User defined types
package main;
type Animal struct {
Name string
Age int
}
func main() {
var anaconda Animal
}
Compiler
• Uses GCC as back end
• Checks for unused packages and variables
• Checks types and return values
Go tools
• go fmt -> format your source code (cool!)
• go get -> manage and install your
dependencies
• go build / run -> compile and run your
program
• go test -> run your tests
Organizing code
package string_processing;
func Process(str string) {
// Code code code
}
package main
import "string_processing"
func main() {
string_processing.Process("foobar")
}
Who is using Go?
• Google (dl.google.com, youtube)
• SoundCloud
• Heroku
• CloudFlare
• Ubuntu
Wrapping up...
• Cool language
• Concurrent and networked
• Benefits from both dynamic and static typed languages
• Modern
• Give it a try!
Thank you.!