happy go programing

18
Happy Go Programing.! A Short Introduction

Upload: pravin-mishra

Post on 28-Jan-2015

113 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Happy Go programing

Happy Go Programing.!

A Short Introduction

Page 2: Happy Go programing

Who am I

Pravin Mishra

Software Engineer @ShepHertz

Working on App42 PaaS (Public Cloud Platform-as-a-Service)

Keep in touch - @pravinmishra88

Page 3: Happy Go programing

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.

Page 4: Happy Go programing

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

Page 5: Happy Go programing

Features

● Simple, minimal syntax● Fast compilation times● Easy concurrency support via goroutines● Garbage-collected● A flexible interface system● Statically linked binaries● Simple & Fun!

Page 6: Happy Go programing

Language focus

• System programming

• Networked / multi-core

• Fast

• Compatible with C

• Best of static typed language and dynamic typed languages

Page 7: Happy Go programing

Hello World

package main

import "fmt"

func main() {

fmt.Println("Hello World")

}

Page 8: Happy Go programing

Compiled language

$ go build hello.go

$ ls

hello hello.go

$ ./hello

Hello Word

Page 9: Happy Go programing

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]

Page 10: Happy Go programing

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]

Page 11: Happy Go programing

with dynamic casting

package main

import ( "fmt" )

func main() {

a := 123

fmt.Printf("Value of a: %d", a)

}

- Value of a: 123

Page 12: Happy Go programing

User defined types

package main;

type Animal struct {

Name string

Age int

}

func main() {

var anaconda Animal

}

Page 13: Happy Go programing

Compiler

• Uses GCC as back end

• Checks for unused packages and variables

• Checks types and return values

Page 14: Happy Go programing

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

Page 15: Happy Go programing

Organizing code

package string_processing;

func Process(str string) {

// Code code code

}

package main

import "string_processing"

func main() {

string_processing.Process("foobar")

}

Page 16: Happy Go programing

Who is using Go?

• Google (dl.google.com, youtube)

• SoundCloud

• Heroku

• CloudFlare

• Ubuntu

Page 17: Happy Go programing

Wrapping up...

• Cool language

• Concurrent and networked

• Benefits from both dynamic and static typed languages

• Modern

• Give it a try!

Page 18: Happy Go programing

Thank you.!