go语言的函数,可以作为函数的参数,传递给另外一个函数,作为另外一个函数的返回值返回。
go语言函数作为参数package mainimport "fmt"func sayHello(name string) { fmt.Printf("Hello,%s", name)}func f1(name string, f func(string)) { f(name)}func main() { f1("tom", sayHello)}
运行结果
[Running] go run "d:SynologyDrive软件开发gogolang入门到项目实战goproject360duote.compro01tempCodeRunnerFile.go"Hello,tom
go语言函数作为返回值package mainimport "fmt"func add(x, y int) int { return x + y}func sub(x, y int) int { return x - y}func cal(s string) func(int, int) int { switch s { case "+": return add case "-": return sub default: return nil }}func main() { add := cal("+") r := add(1, 2) fmt.Printf("r: %vn", r) fmt.Println("-----------") sub := cal("-") r = sub(100, 50) fmt.Printf("r: %vn", r)}
运行结果
[Running] go run "d:SynologyDrive软件开发gogolang入门到项目实战goproject360duote.compro01test.go"r: 3-----------r: 50