-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.go
67 lines (54 loc) · 1.66 KB
/
main.go
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
package main
import (
"os"
iface "github.com/sanketgupta07/go-practice/interface"
closuers "github.com/sanketgupta07/go-practice/closures"
tree "github.com/sanketgupta07/go-practice/datastructure/tree"
err "github.com/sanketgupta07/go-practice/err"
recursion "github.com/sanketgupta07/go-practice/recursion"
multiplevalue "github.com/sanketgupta07/go-practice/return-multiple-value"
variadic "github.com/sanketgupta07/go-practice/variadic_function"
"log"
)
//Functions are First-class citizen in Go
var l = log.Println
func main() {
l("Main function")
l(multiplevalue.MultipleValue())
l("Variadic- Sum: ", variadic.VariadicFunc(2, 5))
l("Closures- CallClosures(10)", closuers.CallClosures(10))
l("Recursion 1- Factorial (7): ", recursion.Factorial(7))
l("Recursion 2- Fibonacci (5): ", recursion.CallFibonacci(5))
//Error call
i, er1 := err.ErrorTest(-8)
l("Error call :", i)
if er1 != nil {
l(er1.Error())
} else {
l(i)
}
//CustomTypeError call
i, er2 := err.CustomErrExample(-7)
l("Error call :", i)
if er2 != nil {
l(er2.Error())
} else {
l(i)
}
//Use data from error type
if ae, ok := er2.(*err.CustomTypeErr); ok {
l(ae.Arg)
l(ae.Prob)
}
//Insert BinaryTree
t := &tree.BinaryTree{}
t.Insert(10).Insert(20).Insert(5).Insert(4).Insert(25).Insert(7).Insert(15).Insert(1)
tree.PrintTree(os.Stdout, t.Root, 0, 'M')
//Run interface
rect := iface.Rect{Length: 10, Width: 5}
circle := iface.Circle{Radius: 10}
rect_area, rect_peri := iface.Measure(rect)
circle_area, circle_peri := iface.Measure(circle)
l("Rect Area: and Rect Perimeter:", rect_area, rect_peri)
l("Circle Area: and Circle Perimeter: ", circle_area, circle_peri)
}