3.2go语言中的匿名函数(代码片段)

孙琦Ray 孙琦Ray     2022-12-12     450

关键词:

Go不允许函数嵌套,但是可以定义匿名函数,后续配合Goroutine的使用,很轻松的构建并发程序。

语法定义

匿名函数一般是在函数体内的独立逻辑,与函数定义类似,但是由于其特殊位置,在使用时需要注意:

  • 在定义时主要为参数列表和返回值,如果不定义返回值类型,就不要使用return
  • 在定义的尾部不要忘了执行,即(),否则会看到定义未使用的提示(func literal evaluated but not used);当然在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
()

无返回值

package main

import "fmt"

func main() 
    func () 
        fmt.Println("Hello, World")
    ()

有返回值

package main

import "fmt"

func main() 
    msg := func () string 
        return "Hello, World"
    ()

    fmt.Println(msg)

传入参数

package main

import "fmt"

func main() 
    func (s string) 
        fmt.Println(s)
    ("Hello, World")

函数赋值给变量

package main

import "fmt"

func main() 
    myFunc := func (s string) 
        fmt.Println(s)
    

    myFunc("Hello, World")

golangbasic_leaming4函数(代码片段)

阅读目录Go语言函数Go语言函数章节目录Go语言函数定义_声明_调用(超详细)一、定义一个普通函数1.1函数名1.2参数列表1.3返回参数列表1.4函数体二、参数列表简写三、函数返回值3.1同一类型的返回值3.2带有变量名的返回... 查看详情

golang中的匿名函数(闭包)(代码片段)

GO语言的匿名函数就是闭包,以下是《GO语言编程》中对闭包的解释 基本概念闭包是可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者任何全局上下文中定义,而是在定义代码块的环境中定... 查看详情

go语言学习笔记—函数:匿名函数——没有函数名的函数(代码片段)

go语言支持匿名函数,即在需要使用函数时,再定义函数。1.匿名函数没有函数名,只有函数体声明匿名函数func(参数列表)(返回参数列表)函数体在声明时调用匿名函数func(dataint)fmt.Println("hello",data)(100)//(100)表示... 查看详情

go语言中的函数(代码片段)

...递数据,返回值,函数将处理好的数据传递给调用者。Go语言中函数被称为一等公民(first-class)。意味着支持高阶函数,支持匿名函数,支持闭包等特性,可以满足接口等高级函数特性。2定义语法:定义:func函数名( 查看详情

go语言函数语法上篇(代码片段)

文章目录一、Go语言函数声明1.1Go语言里面拥三种类型的函数1.2普通函数声明(定义)1.3函数的返回值二、函数变量三、Go语言字符串的链式处理四、匿名函数五、把函数作为接口来调用六、Go语言闭包,引用外部变量... 查看详情

go匿名函数和闭包(代码片段)

...函数和闭包。函数当然还可以作为返回值,但是在Go语言中函数内部不能再像之前那样定义函数了,只能定义匿名函数。匿名函数就是没有函数名的函数,匿名函数的定义格式如下:func(参数)(返回值)函数体匿名函... 查看详情

go语言学习笔记—基础—函数:闭包(closure)——引用了外部变量的匿名函数(代码片段)

闭包是引用了(函数外部)自由变量的函数。被引用的自由变量和函数一同存在,即使离开了自由变量所在的引用环境(例如在某个go源文件中导入某个package的闭包),我们仍可在闭包中继续使用这个自由... 查看详情

go语言学习之旅--函数(代码片段)

函数GoLang函数介绍Go语言中函数特性函数的定义匿名函数闭包deferinit函数GoLang函数介绍函数的go语言中的一级公民,我们把所有的功能单元都定义在函数中,可以重复使用。函数包含函数的名称、参数列表和返回值类型... 查看详情

go之匿名函数闭包(代码片段)

匿名函数go语言支持匿名函数,即像普通变量一样被引用或者传递funcmain()varvfunc(aint)intv=func(aint)intreturna*afmt.Println(v(5))//另一种写法s:=func(aint)intreturna*afmt.Println(s(7))GO语言的匿名函数就是闭包,《go语言编程》中对闭包的解释是:... 查看详情

go语言学习之旅--函数(代码片段)

函数GoLang函数介绍Go语言中函数特性函数的定义匿名函数闭包deferinit函数GoLang函数介绍函数的go语言中的一级公民,我们把所有的功能单元都定义在函数中,可以重复使用。函数包含函数的名称、参数列表和返回值类型... 查看详情

go语言学习之闭包函数(代码片段)

packagemainimport("fmt")//匿名函数1funcintSeq()func()intvararrInt=[10]int1,2,3,4,5,6,7,8,9,10i:=-1returnfunc()inti+=1returnarrInt[i]//带参数匿名函数2funcintSeq2()func(indexint)intvararrInt=[10]int0,1,2,3 查看详情

golang之匿名函数和闭包(代码片段)

Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用。使用方法如下:main.gopackagemainimport("fmt")funcmain()varvfunc(aint)intv=func(aint)intreturna*afmt.Println(v(6))//两种写法v1:=func(iint)intreturni*ifmt.Println(v1(7))GO语言的匿名函 查看详情

go语言基础:map|函数(代码片段)

文章目录mapmap的定义map使用判断某个键是否存在map的遍历使用delete函数删除键值对特定的顺序遍历map元素是map类型的切片元素类型是切片的map练习函数函数定义函数的调用参数类型的简写可变参数返回值多返回值返回值命名返回... 查看详情

go语言基础:map|函数(代码片段)

文章目录mapmap的定义map使用判断某个键是否存在map的遍历使用delete函数删除键值对特定的顺序遍历map元素是map类型的切片元素类型是切片的map练习函数函数定义函数的调用参数类型的简写可变参数返回值多返回值返回值命名返回... 查看详情

3.5go语言中将函数作为值使用(代码片段)

变量定义中使用函数在匿名函数中,我们已经见过这种形式,即将匿名函数体整体赋值给某个变量,此时该变量就相当于这个函数,Python中也有类似的表达方式。packagemainimport"fmt"funcmain() a:=func() fmt.Println... 查看详情

3.5go语言中将函数作为值使用(代码片段)

变量定义中使用函数在匿名函数中,我们已经见过这种形式,即将匿名函数体整体赋值给某个变量,此时该变量就相当于这个函数,Python中也有类似的表达方式。packagemainimport"fmt"funcmain() a:=func() fmt.Println... 查看详情

go语言基础函数,数组,指针,结构体(代码片段)

...回值为什么闭包不会被垃圾回收defer内置函数panic、recover语言变量作用域数组数组定义数组+函数+宏定义二维数组指针make和new的区别二级指针的使用空指针指针数组将指针传入函数进行值的交换结构体自定义类型和类型别... 查看详情

go语言中的函数

...递数据,返回值,函数将处理好的数据传递给调用者。Go语言中函数被称为一等公民(first-class)。意味着支持高阶函数,支持匿名函数,支持闭包等特性,可以满足接口等高级函数特性。##2定义语法:```定义:f 查看详情