2.1.可变参数函数

  • 可变参数指参数的个数可以是任意个
  • 可变参数必须在参数列表最后的位置,在参数名和类型之间添加三个点表示可变参数函数
  • 声明函数时,在函数体把可变参数当作切片使用即可
package main

import "fmt"

func demo(name string, hover ... string)  {
fmt.Println(name,"的爱好是") for i,n := range hover{
fmt.Println(i,n)
}
} func main() {
demo("derek","看书","打球","游戏")
} //结果
derek 的爱好是
0 看书
1 打球
2 游戏

2.2.匿名函数

package main

import "fmt"

func main() {
//第一种:无参数无返回值
func(){
fmt.Println("无参数无返回值匿名函数")
}() //第二种:有参数
func(name string){
fmt.Println("名字为:",name)
}("derek") //第三种:有返回值
name := func() string{
return "zhang_derek"
}()
fmt.Println(name)
}

2.3.函数变量

 在go语言中函数也是一种类型

  • 定义完函数变量后,可以使用匿名函数进行赋值,也可以使用已经定义好的函数进行赋值
  • 函数变量定义以后与普通函数调用语法相同,变量名就是普通函数声明的函数名
  • 函数变量是除了slice,map,channel,interface外第五种引用类型

(1)函数变量是引用类型

package main

import "fmt"

func b()  {
fmt.Println("bbb")
} func main() {
//函数变量是引用类型
var a func()
a = b
//内存地址相同
fmt.Println(a,b) //0x47d820 0x47d820
}

(2)函数作为参数

package main

import "fmt"

func mydo(arg func(name string))  {
fmt.Println("执行mydo")
arg("derek")
} func main() {
mydo(func(name string) {
fmt.Println(name)
})
}

(3)函数作为返回值

package main

import "fmt"

//函数作为返回值
func a() func() int{
return func() int {
return 110
}
} func main() {
result := a()
r2 := result()
fmt.Println(r2) //110
}

 

2.GO-可变参数函数、匿名函数和函数变量的更多相关文章

  1. volatile,可变参数,memset,内联函数,宽字符窄字符,国际化,条件编译,预处理命令,define中##和#的区别,文件缓冲,位域

    1.volatile: 要求参数修改每次都从内存中的读取.这种情况要比普通运行的变量需要的时间长. 当设置了成按照C99标准运行之后,使用volatile变量之后的程序运行的时间将比register的 ...

  2. 如何把va_list可变参数传送到下一级函数中(如传送到printf)

    最近我在一个LCD上想实现打印格式化字符串的功能,实现这样的功能可有两种方式: 一 最直接的就是自己去解析类似于printf功能的一个函数: 二 比较简单的方法是使用已有的sprintf功能,把格式化 ...

  3. C函数和宏中的可变参数

    一:调用惯例 函数的调用方和被调用方对函数如何调用应该有统一的理解,否则函数就无法正确调用.比如foo(int n, int m),调用方如果认为压栈顺序是m,n,而foo认为压栈顺序是n, m,那么 ...

  4. 深入C语言可变参数(va_arg,va_list,va_start,va_end,_INTSIZEOF)

    一.什么是可变参数 在C语言编程中有时会遇到一些参数个数可变的函数,例如printf(),scanf()函数,其函数原型为: int printf(const char* format,…),int ...

  5. JAVA提高一:静态导入、可变参数、增强型for循环、装拆箱

    国庆假期已结束,假期8天,全部在家带娃,体会到了妻子的不容易,需要好好努力来多赚钱了,言归正传.10月份开始进去JAVA 高级语法知识学习,本节复习学习的为:静态导入.可变参数.增强型for循环.装拆 ...

  6. C 实现可变参数

    C中可以借助va_list实现可变参数: va_start:使用传入的可变参数的第一个变量初始化va_list va_arg:获取当前可变参数,每次调用时会将指针向后移 va_end:结束 利用这个机 ...

  7. C语言可变参数va_list

    一.什么是可变参数 在C语言编程中有时会遇到一些参数个数可变的函数,例如printf(),scanf()函数,其函数原型为: int printf(const char* format,-) int ...

  8. python中可变参数和关键字参数总结

    #_*_coding='utf-8' #可变参数 def person(name,age,*args): #定义了可变参数args print('传入的名字为:',name) print('传入的年龄 ...

  9. Python之定义可变参数

    如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数: def fn(*args):    print args 可变参数的名字前面有个 * 号,我们可以传入0个.1个或多个参数给可变参数: ...

  10. C学习笔记(11)--- 可变参数,浅谈内存管理 【C基础概念系列完结】

    1.可变参数(variable arguments): 可变参数允许您定义一个函数,能根据具体的需求接受可变数量的参数. int func(int, ... )             (函数 fun ...

随机推荐

  1. 代码问题【LDES//AAAI2019】

    paper:Li Y, Zhu J, Hoi S C H, et al. Robust Estimation of Similarity Transformation for Visual Objec ...

  2. linux基础学习路线&review

    linux基础学习网址: https://www.runoob.com/linux/linux-tutorial.html 比较重点的是这个启动过程的介绍学习:https://www.runoob.c ...

  3. tensorflow之tf.stop_gradient

    停止梯度计算. 当在一个图中执行时, 这个op按原样输出它的输入张量. 当构建ops来计算梯度时,该op会阻止将其输入贡献考虑在内. 参数: Input: 一个张量. name: 操作的名称(可选) ...

  4. Focal Loss tensorflow 实现

    def focal_loss(pred, y, alpha=0.25, gamma=2): r"""Compute focal loss for predictions. ...

  5. JAVAWeb入门之JSP基础知识

    也是到了考试周,很多课都结了,准备去学点新东西.随后就开始自学JAVAWeb. 要学习JAVAWeb,首先需下面的知识: a)      HTML/CSS/JS(前端页面),XML,JSON,vue ...

  6. Python机器学习笔记 Grid SearchCV(网格搜索)

    在机器学习模型中,需要人工选择的参数称为超参数.比如随机森林中决策树的个数,人工神经网络模型中隐藏层层数和每层的节点个数,正则项中常数大小等等,他们都需要事先指定.超参数选择不恰当,就会出现欠拟合或者 ...

  7. Docker Hub镜像加速器

    国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器.Docker 官方和国内很多云服务商都提供了国内加速器服务. 1.配置加速地址 vim /etc/docker/daemo ...

  8. Go语言中初始化变量中字面量&Type{}、new、make的区别

    Go语言中new和make是内建的两个函数,主要用来创建分配类型内存.在我们定义生成变量的时候,可能会觉得有点迷惑,其实他们的规则很简单,下面我们就通过一些示例说明他们的区别和使用. 变量的声明 va ...

  9. Laravel 创建指定表 migrate

    解决方案:打开创建表的那个 migration 文件,在创建表的方法执行之前加一个判断条件 if (!Schema::hasTable('password_resets')) { Schema::cr ...

  10. 家电制造业中MES系统发挥的作用

    人们对MES系统在家电生产领域的应用并不陌生,这是离散型MES应用的一个重要领域. 如空调.冰箱.电视.洗衣机等生产加工中均具有批量制造.多品种小批量.单件生产的等特点,很多企业也是以以订单.合同为核 ...