recursions

This commit is contained in:
2024-10-23 16:28:28 +00:00
parent a8148f2400
commit f2240b1c38
5 changed files with 118 additions and 0 deletions

50
functions/main.go Normal file
View File

@@ -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
}