-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
101 lines (80 loc) · 1.82 KB
/
main.go
File metadata and controls
101 lines (80 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package main
import (
"errors"
"fmt"
"log"
"reflect"
)
func main() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered in f", r)
Array()
}
}()
for i:= 0; i < 5; i++ {
defer fmt.Println("Done!!!", i)
}
Zuweisungen()
}
//Fibonacci holds the last two Elements of a Fibonacci row
type Fibonacci struct {
a int
b int
}
//NewFibonacci returns an new instance of Fibonacci struct
func NewFibonacci() *Fibonacci {
return &Fibonacci{1, 1}
}
//Zuweisungen shows the different ways of Zuweisungen in go
func Zuweisungen() {
a, b := 1, 2.0
fmt.Printf("a ist = %s\n", reflect.TypeOf(a))
fmt.Printf("b ist = %s\n", reflect.TypeOf(b))
var c, d int
fib := NewFibonacci()
c, d, _ = fib.CalculateNext()
fmt.Printf("c ist = (%s)%d\n", reflect.TypeOf(c), c)
fmt.Printf("d ist = (%s)%d\n", reflect.TypeOf(d), d)
doXTimes(func() {
fmt.Printf("Next Fib ist = (%s)%d\n", reflect.TypeOf(fib.a), fib.a)
if _, _, err := fib.CalculateNext(); err != nil {
log.Fatal(err)
}
}, 10)
fib.SetA(-1)
if _, _, err := fib.CalculateNext(); err != nil {
//log.Fatal(err)
panic(err.Error())
}
}
func doXTimes(aFunction func(), x int) {
for i := 0; i < x; i++ {
aFunction()
}
}
//SetA sets one of the two last Fibonacci numbers
func (fib *Fibonacci) SetA(newA int) {
fib.a = newA
}
//CalculateNext calculates the next Fibonacci number
func (fib *Fibonacci) CalculateNext() (int, int, error) {
var err error
if fib.a <= 0 || fib.b <= 0 {
err = errors.New("No good man. a or b are to small")
}
fib.a, fib.b = fib.b, fib.a + fib.b
return fib.a, fib.b, err
}
//Array shows the go Array Syntax by example
func Array() {
var a [5]string
a[0] = "Hallo"
a[1] = "Mannheim"
a[2] = "Wir"
a[3] = "lieben"
a[4] = "Dich"
fmt.Println(a)
b := a[0:2]
fmt.Println(b, len(b), cap(b))
}