Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Funktioiden Välittäminen Argumentteina | Funktiot
Johdatus Golangiin

bookFunktioiden 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

index.go

copy
12345678910111213141516
package 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

index.go

copy
1234567891011121314151617181920
package 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)) }
question mark

Mikä on seuraavan ohjelman tuloste:

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 4. Luku 6
some-alt