Open vkorbes opened 4 years ago
package main
import ("fmt")
func main(){
y := receber()
fmt.Println(y(5))
}
func receber() func(x int) int{
return func(x int) int{
return x*(x+2)
}
}
https://play.golang.org/p/kXhJkpVAJWG
package main
import "fmt"
/* - Crie uma função que retorna uma função.
- Atribua a função retornada a uma variável.
- Chame a função retornada. */
func principal() func(x int) int {
return func(x int) int {
return x
}
}
func main() {
retornada := principal()(1337)
fmt.Println(principal()(10))
fmt.Println(retornada)
}
Output
10
1337
Program exited.
Não entendi direito a utilidade. Preciso ver mais exemplos, mas aí está a solução.
/* Crie uma função que retorna uma função.
- Atribua a função retornada a uma variável.
- Chame a função retornada.
*/
package main
import (
"fmt"
"math"
)
func main() {
z := funcaoPai(5)
z()
}
// Recebe raio
// retorna uma funcao que calcula raio do circulo
func funcaoPai(r float64) func() {
// dado necessario para função de calculo
pih := math.Pi
return func() {
area := pih * pih * r
fmt.Println(area)
}
}
7, 8 e 9: https://play.golang.org/p/KJsaVqqNfh9
Cap. 13 – Exercícios: Nível #6 – 8 https://go.dev/play/p/yi-EehkuoS2
package main
import("fmt")
func pot(n int) func(x int) int{
magica := func(x int) int{
i := 1
for j := 0; j < n; j++{
i *= x
}
return i
}
return magica
}
func main(){
quadrado := pot(2)
cubo := pot(3)
fmt.Println("Quadrado de 8:", quadrado(8))
fmt.Println("Cubo de 8:", cubo(8))
}
Exercício: Capítulo 13, Exercício 9 (Nível: 6)
Use esta thread para compartilhar sua solução, discutir o exercício com os colegas e pedir ajuda caso tenha dificuldades!