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!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme