Table of Contents |
---|
Overview
Installation
brew install go
Configuration
Setup default workspace
mkdir ~/go
mkdir ~/go/src
Hello World Example
vi helloworld.go
Code Block |
---|
package main import ( "fmt" ) func main(){ fmt.Println("Hello World") } |
Run it
go run helloworld.go
Compile it
go build
Install it
go install
Commands
Command | Description |
---|---|
go run <src.go> | Run some code |
go build | Compile the code. Outputs to local folder. Executable has folder as name. |
go install | Compiles and places the output in workspace/bin |
go env GOPATH | Outputs the default workspace folder |
Variables
Variables are defined using the following syntax:
var <variablename> <type>
example:
var x int
All variables have a zero value and are pre-initialized to their zero value. For example, an int would have a zero value of 0 and a string would have a zero value of empty string "".
Initializing the variable at declaration time:
var x int = 5
Quick Syntax: infers type based on value.
x:=5
Example:
Code Block |
---|
package main import ( "fmt" ) func main(){ var x int x = 5 fmt.Println(x) } |
If Statements
Code Block |
---|
package main import ( "fmt" ) func main(){ x := 7 if x > 6 { fmt.Println("More than 6") } else if x < 2 { } else { } } |
Arrays
Code Block |
---|
package main import ( "fmt" ) func main(){ //fix size var a [5]int a[2] = 7 fmt.Println(a) a:= [5]int{5,4,3,2,1} fmt.Println(a) //slices a:= [] int{5,4,3,2,1} a = append(a,13) fmt.Println(a) } |
Maps
Code Block |
---|
package main import ( "fmt" ) func main(){ vertices := make(map[string]int) vertices["triangle"] = 2 vertices["square"] = 3 vertices["tree"] = 12 delete(vertices, "square") fmt.Println(vertices["traingle"]) fmt.Println(vertices) } |
Loops
The only type of look in go is the for loop.
Code Block |
---|
package main import ( "fmt" ) func main(){ //for loop for i :=0; i<5; i++{ fmt.Println(i) } //while loop j:=0 for j<5 { fmt.Println(j) j++ } //loop over array or slice arr := []string{"a"m"b","c"} for index, value := range arr { fmt.Println("index:", index, "value:", value) } //loop over a map m := make(map[string]int) m["triangle"] = 2 m["square"] = 3 for key, value := range m { fmt.Println("key:", key, "value:", value) } } |
FunctionsÂ
Example showing error return
Code Block |
---|
package main import ( "fmt" "error" "math" ) func main() { result, err := sqrt(16) if err != nil { fmt.Println(err) } else { fmt.Println(result) } } func sqrt(x float64) (float64, error ) { if x < 0 { return 0, errors.New("Undefined for negative numbers") } return math.Sqrt(x), nil } |
Structs/Types
Example of Person Type
Code Block |
---|
package main import ( "fmt" ) type person struct { name string age int } func main(){ p:= person{name: "Jake", age: 23 } fmt.Println(p) fmt.Println(p.age) } |
Pointers
Pass by Reference Example
Code Block |
---|
package main import ( "fmt" ) func main(){ i := 7 inc(&i) fmt.Println(i) } func inc(x *int) { *x++ } |
References
Reference | URL |
---|---|
Learn Go in 12 Minutes | https://www.youtube.com/watch?v=C8LgvuEBraI |
Go Packages | https://golang.org/pkg/ |
Go By Examples | https://gobyexample.com/ |