Hello World
package main
import "fmt"
funcmain() {
fmt.Println("Hello World!")
}
Execute & Build
go run app.go// run the code in dev mode
go build app.go// compiling
./app.go// executing the build-file
What is special about Variables in Go?
Declaring Variables
// Providing the value later
var name string
name = "Max"// Providing the value fist
var name string = "Max"// Using type inference
name := "Max"
var width, height float32 = 2.5, 6.1// or: width, height := 2.5, 6.1
fmt.Println(width) // 2.5
fmt.Println(height) // 6.1
Default value
var firstVar bool
fmt.Println(firstVar) // falsevar firstVar string
fmt.Println(firstVar) // ""var firstVar float64
fmt.Println(firstVar) // 0var firstVar int
fmt.Println(firstVar) // 0
Function & Return
funcadd(x int, y int) int {
return x + y
}
funcmain() {
fmt.Println(add(5, 5)) // 10
}
Shorting the datatypes
funcadd(x, y int)int {return x + y
}
Multiple Returns
funcperson(name string, age int)(string, int) {return name, age + 1
}
funcmain() {
name, age := person("max", 22)
fmt.Println(name, age)
// max23
}
Basic Array
var ages [5]int
fmt.Println(ages)
// [0 0 0 0 0]
Adding some values to it
var ages [5]int
ages[0] = 21
ages[1] = 23
fmt.Println(ages)
// [21 23 0 0 0]// the better way:ages := [5]int{23, 21, 19, 23, 24}
fmt.Println(ages)
// [23 21 19 23 24]
Slices
ages := []int{23, 21, 19, 23, 24}
ages = append(ages, 27)
// append does not edit the existing slice. // It returns a new one.
fmt.Println(ages)
// [23 21 19 23 24 27]
Looping through an Array
ages := [3]int{23, 21, 19}
for index, value :=range ages {
fmt.Println(index, value)
// 0 23// 1 21// 2 19
}
If-Else
if5 > 3 {
fmt.Println("5 > 3")
} else {
fmt.Println("3 > 5")
}
Else-if
if5 > 5 {
fmt.Println("5 > 3")
} elseif5 >= 5 {
fmt.Println("Greater / equal")
} else {
fmt.Println("3 > 5")
}
Variables in if-else
if age := 9; age < 18 {
fmt.Print("Not grown up")
}
Which Loops exist?
for-loop
funcmain() {for i := 0; i < 5; i++ {
fmt.Println(i)
}
}
“While”-Loop in Go
for i := 0; i < 5; {
fmt.Println(i)
// endless prints
}
Using a Pointe
funcmain() {
var age = 24var agePointer = &age
fmt.Println(agePointer)
// for example '0xc000016078'
}
Getting the value behind the Pointer
var age = 24var agePointer = &age
fmt.Println(*agePointer) // 24
Changing values with Pointers
var age = 24var agePointer = &age
*agePointer++
fmt.Println(*agePointer) // 25
Basic Struct
type person struct {
name string
age int
}
func main() {
personMax := person{name: "Max", age: 21}
fmt.Println(personMax) // { Max21}
fmt.Println(personMax.name) // Max
}
Basic Map
people := make(map[string]int)
people["Max"] = 23
people["Tom"] = 19
fmt.Println(people["Max"])
Looping through a Map
people := make(map[string]int)
people["Max"] = 23
people["Tom"] = 19for key, value := range people {
fmt.Println(key, value)
// Max 23// Tom 19
}```
**_Happy Coding!_** 👽