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

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

Suggested prompts:

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

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
some-alt