zoukankan      html  css  js  c++  java
  • go函数

    一。定义

          1. 关键字:func

          2.函数名:

          3.参数列表:

             1. 实参:传入的参数

             2.虚参:函数定义时的,占位参数,是局部变量和外部或者全局变量冲突,互不影响。

             3.变长参数:arr ...int,得放在最后         

          4.返回值:

             4.1 如果返回值命名了,这个名称不能在函数内再用

             4.2 函数多返回值:

    二。闭包函数:

          1.将整个函数的定义一气呵成写好并赋值给一个变量。然后用这个变量名作为函数名去调用函数体

          2.因为 Go 不支持在一 个函数的内部再定义一个嵌套函数,所以使用闭包函数能够实现在一个函数内 部定义另一个函数的目的。

          3.闭包函数会改变外部变量的值。

    三。把函数变成一种数据类型:

          1. 格式: type   xxx   func(yyy)(zzz)

             a. 在类型声明的名称xxx右边的是func关键字,我们由此就可知道这是一个函数类型的声明。

             b. 在func右边的就是这个函数类型的参数列表yyy和结果列表zzz

             c. 方式与函数声明的是一致的。只是紧挨在参数列表左边的不是函数名,而是关键字func。这里函数名称和func互换了一下位置而已。

    函数高阶用法:

    一。函数类型也是数据类型

    package main
    
    import "fmt"
    
    type Printer func(contents string) (n int, err error)
    
    func printToStd(contents string) (bytesNum int, err error) {
        return fmt.Println(contents)
    }
    
    func main() {
        var p Printer
        p = printToStd
        p("something")
    }

    1. 格式: 

       type Printer func(contents string) (n int, err error)

      书写函数签名的方式与函数声明的是一致的。只是紧挨在参数列表左边的不是函数名称,而是关键字func。这里函数名称和func互换了一下位置而已。

       以上格式和说明,把一个函数变成了一个数据类型。

    2.实现:

      

     

    二。高阶函数的特点:

         1. 接受其他的函数作为参数传入;

         2. 把其他的函数作为结果返回。

        

         样例一

         样例二

        

  • 相关阅读:
    LOJ 6089 小Y的背包计数问题 —— 前缀和优化DP
    洛谷 P1969 积木大赛 —— 水题
    洛谷 P1965 转圈游戏 —— 快速幂
    洛谷 P1970 花匠 —— DP
    洛谷 P1966 火柴排队 —— 思路
    51Nod 1450 闯关游戏 —— 期望DP
    洛谷 P2312 & bzoj 3751 解方程 —— 取模
    洛谷 P1351 联合权值 —— 树形DP
    NOIP2007 树网的核
    平面最近点对(加强版)
  • 原文地址:https://www.cnblogs.com/derekchen/p/9740925.html
Copyright © 2011-2022 走看看