Embed presentation
Downloaded 65 times































![Arrays -bit.ly/2ahx5EAArrays has fix size and type with zero based indexing:var integers [20]intpackage mainimport "fmt"func main() {var a [2]string // std declarationa[0] = "Hello"a[1] = "Zooplus"fmt.Println(a[0], a[1])fmt.Println(a)fibonacci := [6]int{1, 1, 2, 3, 5, 7} // on-the-fly declarationfmt.Println(fibonacci)}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-32-2048.jpg&f=jpg&w=240)
![Slices - bit.ly/2ahVarPSlice is a dynamic version of array (a sort of):var integers []int // decleration of a slice without sizepackage mainimport "fmt"func main() {fibonacci := [6]int{1, 1, 2, 3, 5, 7}var p []int = fibonacci[1:4]fmt.Println(p)}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-33-2048.jpg&f=jpg&w=240)
![Slices are not storing data - bit.ly/2aai1Wxpackage mainimport "fmt"func main() {names := [4]string{"John","Paul","George","Ringo",}fmt.Println(names)a := names[0:2]b := names[1:3]fmt.Println(a, b)b[0] = "XXX"fmt.Println(a, b)fmt.Println(names)}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-34-2048.jpg&f=jpg&w=240)
![Slices - boundsThere are default low and high bounds for slices. Given the following array:var a [10]intThe following slice declarations are equivalent:a[0:10]a[:10]a[0:]a[:]](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-35-2048.jpg&f=jpg&w=240)
![Creating slice:a := make([]int, 5) // len(a)=5Creating slice with capacity:b := make([]int, 0, 5) // len(b)=0, cap(b)=5Appending slice:b = append(b, 10)Further reading: https://blog.golang.org/go-slices-usage-and-internalsSlices - create, append](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-36-2048.jpg&f=jpg&w=240)

![Maps - declaration, initializationMaps are not initialized by default, we should use make:package mainimport "fmt"var m map[string]stringfunc main() {m = make(map[string]string)m["Zooplus"] = "Gut"m["Bitiba"] = "Gut"m["Fressnapf"] = "Falsch"fmt.Println(m["Zooplus"])}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-38-2048.jpg&f=jpg&w=240)
![Maps - Mutating mapsm[key] = item // upsertitem = m[key] // retrievedelete (m, key) // guess…._, ok = m[key] // ok == true if key exists, map can store/return nilMaps are not thread safe!!!](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-39-2048.jpg&f=jpg&w=240)



![func GetProject(req *restful.Request, resp *restful.Response) {resp.Header().Set("Pragma", "no-cache")//pId := req.PathParameter("projectId")if project, ok := projects.GetProjectByIdOrName(pId); ok{ReturnJSON(resp, http.StatusOK, project)}ReturnMessage(resp, http.StatusNotFound, "Project notfound!")}If-then-elseexistingPipeline, ok := nameSpace.Pipelines[newPipeline.Name]if ok {log.Debug("Entry exists!")} else {nameSpace.Pipelines[newPipeline.Name] = existingPipelinelog.Debug("New entry stored")}?](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-43-2048.jpg&f=jpg&w=240)



![Switch - (multiple)expression(s) in casesswitch {case '0' <= c && c <= '9':return c - '0'case 'a' <= c && c <= 'f':return c - 'a' + 10case 'A' <= c && c <= 'F':return c - 'A' + 10}switch chars[code].category {case "de", "uk", "fr", "sp", "nl":return true}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-47-2048.jpg&f=jpg&w=240)

![Switch - you can break itswitch argv[0] {case "echo":fmt.Print(argv[1:]...)case "cat":if len(argv) <= 1 {fmt.Println("Usage: cat <filename>")break}PrintFile(argv[1])default:fmt.Println("Unknown command; try 'echo' or 'cat'")}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-49-2048.jpg&f=jpg&w=240)
![Switch - fallthroughswitch len(src) {default:v |= uint32(src[3])fallthroughcase 3:v |= uint32(src[2]) << 8fallthroughcase 2:v |= uint32(src[1]) << 16fallthroughcase 1:v |= uint32(src[0]) << 24}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-50-2048.jpg&f=jpg&w=240)
























This document provides an overview of Golang basics for Java developers. It covers Golang's history, features, syntax, data types, flow control, functions and interfaces, concurrency, and differences from Java. Key points include Golang being a compiled, statically typed language created at Google in 2007, its use of packages and imports, basic types like strings and integers, slices for dynamic arrays, maps for key-value pairs, functions with receivers, errors instead of exceptions, and goroutines for concurrency with channels.































![Arrays -bit.ly/2ahx5EAArrays has fix size and type with zero based indexing:var integers [20]intpackage mainimport "fmt"func main() {var a [2]string // std declarationa[0] = "Hello"a[1] = "Zooplus"fmt.Println(a[0], a[1])fmt.Println(a)fibonacci := [6]int{1, 1, 2, 3, 5, 7} // on-the-fly declarationfmt.Println(fibonacci)}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-32-2048.jpg&f=jpg&w=240)
![Slices - bit.ly/2ahVarPSlice is a dynamic version of array (a sort of):var integers []int // decleration of a slice without sizepackage mainimport "fmt"func main() {fibonacci := [6]int{1, 1, 2, 3, 5, 7}var p []int = fibonacci[1:4]fmt.Println(p)}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-33-2048.jpg&f=jpg&w=240)
![Slices are not storing data - bit.ly/2aai1Wxpackage mainimport "fmt"func main() {names := [4]string{"John","Paul","George","Ringo",}fmt.Println(names)a := names[0:2]b := names[1:3]fmt.Println(a, b)b[0] = "XXX"fmt.Println(a, b)fmt.Println(names)}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-34-2048.jpg&f=jpg&w=240)
![Slices - boundsThere are default low and high bounds for slices. Given the following array:var a [10]intThe following slice declarations are equivalent:a[0:10]a[:10]a[0:]a[:]](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-35-2048.jpg&f=jpg&w=240)
![Creating slice:a := make([]int, 5) // len(a)=5Creating slice with capacity:b := make([]int, 0, 5) // len(b)=0, cap(b)=5Appending slice:b = append(b, 10)Further reading: https://blog.golang.org/go-slices-usage-and-internalsSlices - create, append](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-36-2048.jpg&f=jpg&w=240)

![Maps - declaration, initializationMaps are not initialized by default, we should use make:package mainimport "fmt"var m map[string]stringfunc main() {m = make(map[string]string)m["Zooplus"] = "Gut"m["Bitiba"] = "Gut"m["Fressnapf"] = "Falsch"fmt.Println(m["Zooplus"])}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-38-2048.jpg&f=jpg&w=240)
![Maps - Mutating mapsm[key] = item // upsertitem = m[key] // retrievedelete (m, key) // guess…._, ok = m[key] // ok == true if key exists, map can store/return nilMaps are not thread safe!!!](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-39-2048.jpg&f=jpg&w=240)



![func GetProject(req *restful.Request, resp *restful.Response) {resp.Header().Set("Pragma", "no-cache")//pId := req.PathParameter("projectId")if project, ok := projects.GetProjectByIdOrName(pId); ok{ReturnJSON(resp, http.StatusOK, project)}ReturnMessage(resp, http.StatusNotFound, "Project notfound!")}If-then-elseexistingPipeline, ok := nameSpace.Pipelines[newPipeline.Name]if ok {log.Debug("Entry exists!")} else {nameSpace.Pipelines[newPipeline.Name] = existingPipelinelog.Debug("New entry stored")}?](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-43-2048.jpg&f=jpg&w=240)



![Switch - (multiple)expression(s) in casesswitch {case '0' <= c && c <= '9':return c - '0'case 'a' <= c && c <= 'f':return c - 'a' + 10case 'A' <= c && c <= 'F':return c - 'A' + 10}switch chars[code].category {case "de", "uk", "fr", "sp", "nl":return true}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-47-2048.jpg&f=jpg&w=240)

![Switch - you can break itswitch argv[0] {case "echo":fmt.Print(argv[1:]...)case "cat":if len(argv) <= 1 {fmt.Println("Usage: cat <filename>")break}PrintFile(argv[1])default:fmt.Println("Unknown command; try 'echo' or 'cat'")}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-49-2048.jpg&f=jpg&w=240)
![Switch - fallthroughswitch len(src) {default:v |= uint32(src[3])fallthroughcase 3:v |= uint32(src[2]) << 8fallthroughcase 2:v |= uint32(src[1]) << 16fallthroughcase 1:v |= uint32(src[0]) << 24}](/image.pl?url=https%3a%2f%2fimage.slidesharecdn.com%2ftmcgafnsqhqjc2mdbt5r-signature-31951f50746f53d3c0233ba03f47eb612fb8fe3ac112be702f5d1c13630054c1-poli-160808202001%2f75%2fGolang-basics-for-Java-developers-Part-1-50-2048.jpg&f=jpg&w=240)























