Going Go - kanuku/misc GitHub Wiki

Tools

Go Commands

# install module
go get github.com/username/modulename
``



## Variables


### Lesson 1 - Primitive types
```golang
package main

import "fmt"

func main() {

	var i int
	i = 42
	fmt.Println(i)

	var f float32 = 3.14
	fmt.Println(f)

	firstName := "Fernando"
	fmt.Println(firstName)

	b := true
	fmt.Println(b)

	c := complex(3, 4)
	fmt.Println(c)

	r, im := real(c), imag(c)
	fmt.Println(r, im)
}

Lesson 2 - Point references

package main

import "fmt"

func main() {

	// -- pointer operator
	var firstName *string = new(string)

	// -- deferentiator operator
	*firstName = "Fernando"

	fmt.Println(*firstName)
	fmt.Println(*firstName)

	// -- address operator
	lastName := "Benjamin"
	fmt.Println(lastName)

	// -- create a point to the address of the variable
	ptr := &lastName
	fmt.Println(ptr, *ptr)

	// -- we are changing by value
	lastName = "Tricia"
	fmt.Println(ptr, *ptr)

}

Lesson 3 - Constants

package main

import "fmt"

func main() {
	const c = 3
	fmt.Println(c + 3)

	// -- you cannot change the values
	// -- below line
	// c = 3.1

	fmt.Println(c + 1.2)

}

//////////////////////
// Constant blocks
//////////////////////
package main

import (
	"fmt"
)

const pi = 3.1415

const (
	first  = iota + 6
	second = 2
	third  = 2 << iota
	fourth = 4
	fifth
)
const (
	sixth = iota
	seventh
)

func main() {
	fmt.Println(pi)

	fmt.Println(first, second, third, fourth, fifth, sixth, seventh)

}


Collection

Lesson 4 - Arrays

package main

import "fmt"

func main() {

	var arr [3]int
	arr[0] = 1
	arr[1] = 2
	arr[2] = 3
	fmt.Println(arr)
	fmt.Println(arr[2])

	arr2 := [8]int{1, 2, 3, 4, 5, 6, 7, 8}
	fmt.Println(arr2)
}

Lesson 5 - Slices

package main

import "fmt"

func main() {

	arr := [3]int{1, 2, 3}

	// -- Slice is a value type (pointer)
	slice := arr[:]

	arr[1] = 2
	slice[2] = 27
	fmt.Println(arr, slice)

	fmt.Println("####")
	fmt.Println("####")
	fmt.Println("####")

	slice2 := []int{1, 2, 3}
	fmt.Println(slice2)

	slice2 = append(slice2, 4)
	fmt.Println(slice2)

	fmt.Println("####")
	fmt.Println("####")
	fmt.Println("####")
	s2 := slice[1:]
	s3 := slice[:2]
	s4 := slice[1:2]
	fmt.Println(slice, s2, s3, s4)
	slice[2] = 99
	fmt.Println(slice, s2, s3, s4)
}

Lesson 6 - Maps

package main

import "fmt"

func main() {
	m := map[string]int{"foo": 42}

	fmt.Println(m)
	fmt.Println(m["foo"])

	m["foo"] = 27
	fmt.Println(m)

	delete(m, "foo")
	fmt.Println(m)
}

Lesson 7 - Structs (Classes)

// You can edit this code!
// Click here and start typing.
package main

import "fmt"

type user struct {
	ID        int
	FirstName string
	LastName  string
}

func main() {

	var u user
	fmt.Println(u)

	u.ID = 23
	u.FirstName = "Fernando"
	u.LastName = "Benjamin"
	fmt.Println(u)

	// -- Create using the constructor
	u2 := user{
		ID:        45,
		FirstName: "Ralphie",
		LastName:  "Benjamin",
	}
	fmt.Println(u2)

}

Lesson 8 - Functions

// You can edit this code!
// Click here and start typing.
package main

import (
	"errors"
	"fmt"
)

func main() {
	fmt.Println("Hello, δΈ–η•Œ")

	port := 8080

	isStarted := startWebServer(port)
	fmt.Println(isStarted)

	err := startWebServer2(port)
	fmt.Println(err)

	p, err := startWebServer3(port)
	fmt.Println(p, err)

}

func startWebServer(port int) bool {
	fmt.Println("Start server...")
	// -- do something
	fmt.Println("Server started on port", port)

	return true
}

func startWebServer2(port int) error {
	fmt.Println("Start server...")
	// -- do something
	fmt.Println("Server started on port", port)

	return errors.New("Something went wrong")
}

func startWebServer3(port int) (int, error) {
	fmt.Println("Start server...")
	// -- do something
	fmt.Println("Server started on port", port)

	return port, nil
}