diff --git a/anon-functions/go.mod b/anon-functions/go.mod new file mode 100644 index 0000000..baf1842 --- /dev/null +++ b/anon-functions/go.mod @@ -0,0 +1,3 @@ +module example.com/anon-functions + +go 1.23.1 diff --git a/anon-functions/main.go b/anon-functions/main.go new file mode 100644 index 0000000..22a98df --- /dev/null +++ b/anon-functions/main.go @@ -0,0 +1,38 @@ +package main + +import "fmt" + +func main() { + numbers := []int{1, 2, 3} + + double := createTransformer(2) + triple := createTransformer(3) + + transformed := transformNumbers(&numbers, func (number int) int { + return number * 2 + }) + + doubled := transformNumbers(&numbers, double) + tripled := transformNumbers(&numbers, triple) + + fmt.Println(transformed) + + fmt.Println(doubled) + fmt.Println(tripled) +} + +func transformNumbers(numbers *[]int, transform func(int) int) []int { + dNumbers := []int{} + + for _, val := range *numbers { + dNumbers = append(dNumbers, transform(val)) + } + + return dNumbers +} + +func createTransformer(factor int) func(int) int { + return func(number int) int { + return number * factor + } +} \ No newline at end of file diff --git a/functions/main.go b/functions/main.go new file mode 100644 index 0000000..df6c3dc --- /dev/null +++ b/functions/main.go @@ -0,0 +1,50 @@ +package main + +import "fmt" + +type transformFn func(int) int + +func main() { + numbers := []int{1, 2, 3, 4} + moreNumbers := []int{5, 1, 2} + doubled := transformNumbers(&numbers, double) + tripled := transformNumbers(&numbers, triple) + + fmt.Println(doubled) + fmt.Println(tripled) + + transformerFn1 := getTransformerFunction(&numbers) + transformerFn2 := getTransformerFunction(&moreNumbers) + + transformedNumbers := transformNumbers(&numbers, transformerFn1) + moreTransformedNumbers := transformNumbers(&moreNumbers, transformerFn2) + + fmt.Println(transformedNumbers) + fmt.Println(moreTransformedNumbers) +} + +func transformNumbers(numbers *[]int, transform transformFn) []int { + dNumbers := []int{} + + for _, val := range *numbers { + dNumbers = append(dNumbers, transform(val)) + } + + return dNumbers +} + +func getTransformerFunction(numbers *[]int) transformFn { + if (*numbers)[0] == 1 { + return double + } else { + return triple + } +} + +func double(number int) int { + return number * 2 +} + +func triple(number int) int { + return number * 3 +} \ No newline at end of file diff --git a/recursions/go.mod b/recursions/go.mod new file mode 100644 index 0000000..8d9da0a --- /dev/null +++ b/recursions/go.mod @@ -0,0 +1,3 @@ +module example.com/recursions + +go 1.23.1 diff --git a/recursions/main.go b/recursions/main.go new file mode 100644 index 0000000..76e4992 --- /dev/null +++ b/recursions/main.go @@ -0,0 +1,24 @@ +package main + +import "fmt" + +func main() { + fact := factorial(5) + fmt.Println(fact) +} + +func factorial(number int) int { + if number == 0 { + return 1 + } + + return number * factorial(number - 1) + + // result := 1 + + // for i := 1; i <= number; i++ { + // result = result * 1 + // } + + // return result +} \ No newline at end of file