Go Programming Language by Google

  • 1,390 views
Uploaded on

It's a natively compiled programming language by Google.

It's a natively compiled programming language by Google.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,390
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
31
Comments
0
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Why to go for Go UTTAM GANDHI CONNECT WITH UTTAM ON LINKEDIN
  • 2. About Me — C, C++ Developer for last 11 years — Hands on in Javascript, python, ruby, MongoDB — Working with Synerzip for Since July 2011 on a C++ project
  • 3. History of Go — Robert Griesemer, Rob Pike and Ken Thompson started the idea on Sep 21, 2007 — It became an open source project on Nov 10, 2009
  • 4. Why Go — Without go one has to choose between efficient compilation, efficient execution, or ease of programming — Go combines best of static language and dynamic language — Compilation is really fast — Go is Garbage collected, concurrent execution and communication — Scalable, efficient and productive ( C like) — Go aims to be system programming language for multi core machine
  • 5. Comparison with C++, Java and Javascript C++ Java Javascript Go Typesafe ✔ ✔ ✖ ✔ Garbage ✖ ✔ ✔ ✔ Collection Compilation Slow Slow NA Very Fast Concurrency ✖ ✔ ✖ ✔ Ease of ✖ ✔ ✔ ✔ programming Efficiency Highest Slow Slowest Close to C++
  • 6. Hello World // hello.go! package main! import (! "fmt”! )! func main() { ! fmt.Println("Hello World”)! }!
  • 7. Sample function package main! Import “fmt”! func split(sum int) (x, y int) {! x = sum * 4 / 9! y = sum - x! return! }! func main() {! var x, y, z int! fmt.Println(x,y,z)! fmt.Println(split(17))! }!
  • 8. How to Write Go Code 1/2 — Go tool is designed to work with open source code maintained in public repositories — Workspace ¡ src ¡ pkg ¡ bin — export GOPATH=$HOME/go! — go install hello!
  • 9. How to Write Go Code 2/2 — go install sum (create and put lib pkg)! — go install usinglib ! — go get code.google.com/p/go.example/ hello! — go test sum!
  • 10. Object Oriented Go — No classes, no inheritance — go has duck typing — structs are used for custom types, aggregation — Interfaces, abstract type has methods — Any custom type having same methods as interface follows that (and/or other) interface — Interface{}, empty interface is like void in C or Object in Java
  • 11. interface package main! import (! "fmt"! )! type Printer interface {! Print()! }! func (f MyFloat) Print() {! !fmt.Println(f);! }! func main() {! var a Printer ! f := MyFloat(5.5)! a = f!
  • 12. Features 1/2 — Garbage collection — Concurrency — Packages ¡ fmt, net, os, time, math, zlib ¡ http://golang.org/pkg/ has the exhaustive list — Types ¡ bool, int, int8, int16, int32, int64, uint …, byte, float32,float64, complex64, complex128 ¡ const — For loop only — struct, access fields using dot — Pointer but no pointer arithmetic
  • 13. Features 2/2 — Slices (array) http://tour.golang.org/#31 — Maps http://tour.golang.org/#39 — Function closures http://tour.golang.org/#43 — Struct methods http://tour.golang.org/#50 ¡ Methods cannot be defined on basic types — Interfaces http://tour.golang.org/#53 — Error http://tour.golang.org/#55
  • 14. Concurrency — go routines ¡ Lightweight thread like routine (may be one or more thread) — Channels and Buffered Channel ¡ Useful for sync between go routines ¡ Send and receive to channel is blocking ( no sync needed) — Range and close ¡ Range used iterating over channel ¡ Close used by sender after sending all values — Select ¡ Lets goroutine waits on multiple communication operations
  • 15. JSON and Go type Message struct {! Name string! Body string! Time int64! }! m := Message{"Alice", "Hello", 1294706395881547000}! b, err := json.Marshal(m)! b == []byte(`{"Name":"Alice","Body":"Hello","Time" :1294706395881547000}`)!
  • 16. Web Server Creating a webserver is child’s play in Go, (if the child knows programming J A sample is available here Web Server -- http://tour.golang.org/#59
  • 17. Go In Production — Google is using in production for ¡ http://golang.org ¡ Vitess system for large-scale SQL installations ¡ Download server dl.google.com ÷ It delivers chrome binaries and apt-get packages — Other companies using Go in production ¡ BBC Worldwide ¡ Canonical ¡ Heroku ÷ Replaced web services written ROR to GO ¡ Iron.io ¢ Cloud application services, replaced ROR to GO ¡ Nokia ¡ SoundCloud ¡ http://go-lang.cat-v.org/organizations-using-go
  • 18. My Opinion About Go — In my opinion Go is very useful for server side programming and command-line tools. It’s concurrency feature makes it stands out from rest of the programming languages. — The programs written with Go will be less complex than C++, making it easier to maintain.
  • 19. References — FAQ http://golang.org/doc/faq — Installation http://golang.org/doc/install — Code http://golang.org/doc/code.html — Videos http://blog.golang.org/go-videos-from-google-io- 2012 — Tour http://tour.golang.org/ — Efficiency BM - JSON Benchmarks
  • 20. References — http://www.javaworld.com/article/2080935/ scripting-jvm-languages/go-google-go-a-language-on- full-throttle.html — http://blog.golang.org/json-and-go — http://www.drdobbs.com/open-source/getting-going- with-go — http://www.drdobbs.com/open-source/why-not-go/ 240005062 — http://www.jellolabs.com/blog/why-golang-is-ready- for-early-stage-startups.html
  • 21. References — http://stackoverflow.com/questions/11462046/what-is-the- niche-of-go-lang — https://code.google.com/p/go-wiki/wiki/ SuccessStories# — http://stackoverflow.com/questions/12168873/cross-compile- go-on-osx — http://matt.aimonetti.net/posts/2012/11/27/real-life-concurrency- in-go/ — http://www.golang-book.com/10 — http://matt-welsh.blogspot.in/2013/08/rewriting-large-production- system-in-go.html