golang 中函数可以按照方法来使用,也可以当作变量来使用(返回的是一个闭包)

举例说明一下吧:

1. 传递0个或者多个参数

/**
 * @desc 传递0个或者多个参数 格式为:func 函数名(变量 ...数据类型){}  
 **/
 func allArr(arr ...int){
    fmt.Println(arr)
 }
 
 
 
 func main() {
     allArr(1,2,3,4,5)//测试调用
 }
 

2. 传递1个或者多个参数

/**
 * @desc 传递1个或者多个参数 格式为:func 函数名(变量 数据类型 , 变量 ...数据类型){}  
 **/
 func allArr(strs string , arr ...int){
    fmt.Println(strs ,arr)
 }
 
 
 
 func main() {
     allArr("test_strs",1,2,3,4,5)//测试调用
 }

3. 直接当作闭包函数

/**
 *@desc 直接调用闭包函数
 **/
 func main() {
     test := func(param int){
            fmt.Println("这是一个闭包",param)
     }
     test(123)
 }

4. 间接使用闭包

/**
 *@desc 间接调用闭包函数
 **/
 func test() func(){
        i := 0;
        return func(){
            i++;
            fmt.Println(i)
        }
  }
  
  
  func main() {
      test := test();//测试调用
      test();
  }      

5. defer 延迟作用的函数

/**
 *@desc defer 延迟作用的函数 【 defer 函数是谁在前谁后执行的顺序 ,所在的方法执行完之后执行该函数 】
 **/
func def(){

     defer test("test1",1);//最后执行

     defer test("test2",2);

     fmt.Println("这是延迟函数哦");
}

func test(a string,arr ...int){
      fmt.Println(a,arr)
}

func main() {
    def();//测试调用
}

6. 捕获异常的函数

func main() {
    panic("这是异常处理");
}

差不多就这些了哦!