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.!

Happy Go programing

  • 1.
    Happy Go Programing.! AShort Introduction
  • 2.
    Who am I PravinMishra Software Engineer @ShepHertz Working on App42 PaaS (Public Cloud Platform-as-a-Service) Keep in touch - @pravinmishra88
  • 3.
    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.
  • 4.
    Go • Initially developedat Google • Created by Ken Thompson (Unix), Rob Pike (Plan 9), and Russ Cox (libtask) • Development started in 2007 • First release in 2009 (Fairly new!)
  • 5.
    Features ● Simple, minimal syntax ● Fastcompilation times ● Easy concurrency support via goroutines ● Garbage-collected ● A flexible interface system ● Statically linked binaries ● Simple & Fun!
  • 6.
    Language focus • Systemprogramming • Networked / multi-core • Fast • Compatible with C • Best of static typed language and dynamic typed languages
  • 7.
    Hello World package main import"fmt" func main() { fmt.Println("Hello World") }
  • 8.
    Compiled language $ gobuild hello.go $ ls hello hello.go $ ./hello Hello Word
  • 9.
    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]
  • 10.
    Static Typed // types.go funcmain() { 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]
  • 11.
    with dynamic casting packagemain import ( "fmt" ) func main() { a := 123 fmt.Printf("Value of a: %d", a) } - Value of a: 123
  • 12.
    User defined types packagemain; type Animal struct { Name string Age int } func main() { var anaconda Animal }
  • 13.
    Compiler • Uses GCCas back end • Checks for unused packages and variables • Checks types and return values
  • 14.
    Go tools • gofmt -> 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
  • 15.
    Organizing code package string_processing; funcProcess(str string) { // Code code code } package main import "string_processing" func main() { string_processing.Process("foobar") }
  • 16.
    Who is usingGo? • Google (dl.google.com, youtube) • SoundCloud • Heroku • CloudFlare • Ubuntu
  • 17.
    Wrapping up... • Coollanguage • Concurrent and networked • Benefits from both dynamic and static typed languages • Modern • Give it a try!
  • 18.