Funktioiden Välittäminen Argumentteina
Toinen hyödyllinen ominaisuus on mahdollisuus välittää funktioita argumentteina toisille funktioille.
Muistutuksena, funktion perussyntaksi parametreilla on seuraava:
func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
// Code
// Optional return statement
}
Seuraavaa syntaksia käytetään määritettäessä parametrin tietotyyppiä, kun se välitetään funktiolle:
func(datatype, datatype, …) return_datatype
func-avainsanaa seuraavat pilkulla erotellut tietotyypit kyseisen funktion parametreille sulkujen sisällä. Lisäksi määritellään palautettavan funktion tai funktioiden palautustietotyyppi, jos se on tarpeen.
Esimerkki havainnollistaa tätä käsitettä:
index.go
12345678910111213141516package main import "fmt" func nTimes(n int, msg string) { for i := 0; i < n; i++ { fmt.Println(msg) } } func printFiveTimes(msg string, show func(int, string)) { show(5, "Hello World") } func main() { printFiveTimes("HelloWorld", nTimes) }
Yllä olevassa esimerkissä funktio nimeltä nTimes välitetään argumenttina printFiveTimes-funktiolle. show-funktion määritelmässä printFiveTimes-parametrin tietotyyppi on func(int, string), joka vastaa nTimes-funktion määritelmää eli nTimes(n int, msg string).
Tarkastellaan nyt esimerkkiä funktiosta, jolla on palautusarvo:
index.go
1234567891011121314151617181920package main import "fmt" // A factorial is the product of all the numbers from 1 up till n // For-example factorial of 5 is 1x2x3x4x5, which is 120 func factorial(n int) int { var result int = 1; for i := 2; i <= n; i++ { result *= i } return result } func eval(n int, oper func(int) int) int { return oper(n) } func main() { fmt.Println(eval(5, factorial)) }
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you show me the example with a return value?
Can you explain how to define a function type with a return value?
What are some common use cases for passing functions as arguments?
Awesome!
Completion rate improved to 1.96
Funktioiden Välittäminen Argumentteina
Pyyhkäise näyttääksesi valikon
Toinen hyödyllinen ominaisuus on mahdollisuus välittää funktioita argumentteina toisille funktioille.
Muistutuksena, funktion perussyntaksi parametreilla on seuraava:
func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
// Code
// Optional return statement
}
Seuraavaa syntaksia käytetään määritettäessä parametrin tietotyyppiä, kun se välitetään funktiolle:
func(datatype, datatype, …) return_datatype
func-avainsanaa seuraavat pilkulla erotellut tietotyypit kyseisen funktion parametreille sulkujen sisällä. Lisäksi määritellään palautettavan funktion tai funktioiden palautustietotyyppi, jos se on tarpeen.
Esimerkki havainnollistaa tätä käsitettä:
index.go
12345678910111213141516package main import "fmt" func nTimes(n int, msg string) { for i := 0; i < n; i++ { fmt.Println(msg) } } func printFiveTimes(msg string, show func(int, string)) { show(5, "Hello World") } func main() { printFiveTimes("HelloWorld", nTimes) }
Yllä olevassa esimerkissä funktio nimeltä nTimes välitetään argumenttina printFiveTimes-funktiolle. show-funktion määritelmässä printFiveTimes-parametrin tietotyyppi on func(int, string), joka vastaa nTimes-funktion määritelmää eli nTimes(n int, msg string).
Tarkastellaan nyt esimerkkiä funktiosta, jolla on palautusarvo:
index.go
1234567891011121314151617181920package main import "fmt" // A factorial is the product of all the numbers from 1 up till n // For-example factorial of 5 is 1x2x3x4x5, which is 120 func factorial(n int) int { var result int = 1; for i := 2; i <= n; i++ { result *= i } return result } func eval(n int, oper func(int) int) int { return oper(n) } func main() { fmt.Println(eval(5, factorial)) }
Kiitos palautteestasi!