Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Å Sende Funksjoner som Argumenter | Funksjoner
Quizzes & Challenges
Quizzes
Challenges
/
Introduksjon til Golang

bookÅ Sende Funksjoner som Argumenter

En annen nyttig funksjon er muligheten til å sende funksjoner som argumenter til andre funksjoner.

Som en påminnelse er den grunnleggende syntaksen for en funksjon med parametere som følger:

func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
      // Code
      // Optional return statement
}

Vi bruker følgende syntaks for å angi datatypen til parameteren når vi sender den til en funksjon:

func(datatype, datatype, …) return_datatype

Nøkkelordet func etterfølges av kommaseparerte datatyper for parameterne til den funksjonen i parentes. I tillegg angir vi returdatatypen for den forventede funksjonen eller settet med funksjoner, hvis aktuelt.

Et eksempel kan bidra til å illustrere dette konseptet:

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) }

I eksemplet ovenfor sender vi en funksjon kalt nTimes som et argument til funksjonen printFiveTimes. Datatypen for parameteren show i definisjonen av funksjonen printFiveTimes er func(int, string), som tilsvarer definisjonen av funksjonen nTimes, altså nTimes(n int, msg string).

La oss nå se på et eksempel på en funksjon med returverdi:

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

Hva vil være utdataene fra følgende program:

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 1.96

bookÅ Sende Funksjoner som Argumenter

Sveip for å vise menyen

En annen nyttig funksjon er muligheten til å sende funksjoner som argumenter til andre funksjoner.

Som en påminnelse er den grunnleggende syntaksen for en funksjon med parametere som følger:

func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
      // Code
      // Optional return statement
}

Vi bruker følgende syntaks for å angi datatypen til parameteren når vi sender den til en funksjon:

func(datatype, datatype, …) return_datatype

Nøkkelordet func etterfølges av kommaseparerte datatyper for parameterne til den funksjonen i parentes. I tillegg angir vi returdatatypen for den forventede funksjonen eller settet med funksjoner, hvis aktuelt.

Et eksempel kan bidra til å illustrere dette konseptet:

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) }

I eksemplet ovenfor sender vi en funksjon kalt nTimes som et argument til funksjonen printFiveTimes. Datatypen for parameteren show i definisjonen av funksjonen printFiveTimes er func(int, string), som tilsvarer definisjonen av funksjonen nTimes, altså nTimes(n int, msg string).

La oss nå se på et eksempel på en funksjon med returverdi:

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

Hva vil være utdataene fra følgende program:

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 6
some-alt