📜  Go语言中的匿名函数

📅  最后修改于: 2021-10-24 13:25:59             🧑  作者: Mango

Go 语言提供了一个称为匿名函数的特殊函数。匿名函数是不包含任何名称的函数。当您想创建内联函数时,它很有用。在 Go 语言中,匿名函数可以形成闭包。匿名函数也称为函数字面量

句法:

func(parameter_list)(return_type){
// code..

// Use return statement if return_type are given
// if return_type is not given, then do not 
// use return statement
return
}()

例子:

// Go program to illustrate how
// to create an anonymous function
package main
  
import "fmt"
  
func main() {
      
    // Anonymous function
   func(){
  
      fmt.Println("Welcome! to GeeksforGeeks")
  }()
    
}

输出:

Welcome! to GeeksforGeeks

要点:

  • 在 Go 语言中,您可以将匿名函数分配给变量。当您将函数分配给变量时,变量的类型是函数类型,您可以像调用函数一样调用该变量,如下例所示。

    例子:

    // Go program to illustrate
    // use of an anonymous function
    package main
      
    import "fmt"
      
    func main() {
          
        // Assigning an anonymous 
       // function to a variable
       value := func(){
          fmt.Println("Welcome! to GeeksforGeeks")
      }
      value()
        
    }
    

    输出:

    Welcome! to GeeksforGeeks
  • 您还可以在匿名函数传递参数。

    例子:

    // Go program to pass arguments 
    // in the anonymous function
    package main
      
    import "fmt"
      
    func main() {
          
        // Passing arguments in anonymous function
      func(ele string){
          fmt.Println(ele)
      }("GeeksforGeeks")
        
    }
    

    输出:

    GeeksforGeeks
  • 您还可以将匿名函数作为参数传递给其他函数。

    例子:

    // Go program to pass an anonymous 
    // function as an argument into 
    // other function
    package main
      
    import "fmt"
      
      
      // Passing anonymous function
     // as an argument 
     func GFG(i func(p, q string)string){
         fmt.Println(i ("Geeks", "for"))
           
     }
        
    func main() {
        value:= func(p, q string) string{
            return p + q + "Geeks"
        }
        GFG(value)
    }
    

    输出:

    GeeksforGeeks
  • 您也可以从另一个函数返回一个匿名函数。

    例子:

    // Go program to illustrate
    // use of anonymous function
    package main
      
    import "fmt"
      
     // Returning anonymous function 
     func GFG() func(i, j string) string{
         myf := func(i, j string)string{
              return i + j + "GeeksforGeeks"
         }
        return myf
     }
        
    func main() {
        value := GFG()
        fmt.Println(value("Welcome ", "to "))
    }
    

    输出:

    Welcome to GeeksforGeeks