Att Skicka Funktioner Som Argument
En annan användbar funktion är möjligheten att skicka funktioner som argument till andra funktioner.
Som en påminnelse är den grundläggande syntaxen för en funktion med parametrar följande:
func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
// Code
// Optional return statement
}
Vi använder följande syntax för att specificera datatypen för parametern när vi skickar den till en funktion:
func(datatype, datatype, …) return_datatype
Nyckelordet func följs av kommaseparerade datatyper för parametrarna till den funktionen inom parenteser. Dessutom specificerar vi returdatatypen för den förväntade funktionen eller uppsättningen av funktioner, om tillämpligt.
Ett exempel kan hjälpa till att illustrera detta koncept:
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) }
I exemplet ovan skickar vi en funktion med namnet nTimes som ett argument till funktionen printFiveTimes. Datatypen för parametern show i definitionen av funktionen printFiveTimes är func(int, string), vilket motsvarar definitionen av funktionen nTimes, det vill säga nTimes(n int, msg string).
Nu ska vi titta på ett exempel på en funktion med ett returvärde:
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)) }
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 1.96
Att Skicka Funktioner Som Argument
Svep för att visa menyn
En annan användbar funktion är möjligheten att skicka funktioner som argument till andra funktioner.
Som en påminnelse är den grundläggande syntaxen för en funktion med parametrar följande:
func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
// Code
// Optional return statement
}
Vi använder följande syntax för att specificera datatypen för parametern när vi skickar den till en funktion:
func(datatype, datatype, …) return_datatype
Nyckelordet func följs av kommaseparerade datatyper för parametrarna till den funktionen inom parenteser. Dessutom specificerar vi returdatatypen för den förväntade funktionen eller uppsättningen av funktioner, om tillämpligt.
Ett exempel kan hjälpa till att illustrera detta koncept:
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) }
I exemplet ovan skickar vi en funktion med namnet nTimes som ett argument till funktionen printFiveTimes. Datatypen för parametern show i definitionen av funktionen printFiveTimes är func(int, string), vilket motsvarar definitionen av funktionen nTimes, det vill säga nTimes(n int, msg string).
Nu ska vi titta på ett exempel på en funktion med ett returvärde:
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)) }
Tack för dina kommentarer!