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
}