recursions
This commit is contained in:
3
anon-functions/go.mod
Normal file
3
anon-functions/go.mod
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module example.com/anon-functions
|
||||||
|
|
||||||
|
go 1.23.1
|
||||||
38
anon-functions/main.go
Normal file
38
anon-functions/main.go
Normal file
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
50
functions/main.go
Normal file
50
functions/main.go
Normal 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
|
||||||
|
}
|
||||||
3
recursions/go.mod
Normal file
3
recursions/go.mod
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module example.com/recursions
|
||||||
|
|
||||||
|
go 1.23.1
|
||||||
24
recursions/main.go
Normal file
24
recursions/main.go
Normal file
@@ -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
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user