如何在golang中使用匿名函数
作者
本篇文章给大家分享的是有关如何在golang中使用匿名函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
packagemain import( "fmt" "go_code/chapter02/funinit/utils" ) //3、全局匿名函数 var( Fun1=func(n1int,n2int)int{ returnn1*n2 } ) //init函数,通常在init函数中完成初始化工作 funcmain(){ //1、在定义匿名函数时就直接调用,这种方式匿名函数只能调用一次 res1:=func(n1int,n2int)int{ returnn1+n2 }(10,20) fmt.Println("res1=",res1) //2、a的数据类型就是函数类型,此时我们可以通过a完成调用 a:=func(n1int,n2int)int{ returnn1+n2 } res2:=a(100,1000) fmt.Println("res2=",res2) res3:=Fun1(100,1000) fmt.Println("res3=",res3) fmt.Println("main......") fmt.Println("Ageisvalue",utils.Age,"Nameisvalue",utils.Name) }
没什么好说的, 见一个,熟悉一个:
packagemain import( "fmt" ) funcmain(){ func(){ fmt.Printf("func1\n") }() func(xint){ fmt.Printf("func2,xis%d\n",x) }(2) a:=func(xint)int{ fmt.Printf("func3,xis%d\n",x) return5 } fmt.Println(a(3)) fmt.Printf("%T\n",func(){ fmt.Printf("func1\n") }) fmt.Printf("%T\n",func(xint){ fmt.Printf("func2,xis%d\n",x) }) fmt.Printf("%T\n",a) }
结果:
func 1func 2, x is 2func 3, x is 35func()func(int)func(int) int
继续看:
packagemain import( "fmt" ) funcmain(){ test(func(xstring){ fmt.Println(x) }) } functest(ffunc(string)){ f("hello") }
结果:hello
但如下都错误, 想想为什么:
packagemain import( "fmt" ) funcmain(){ func(){ fmt.Printf("func1\n") } } packagemain import( "fmt" ) funcmain(){ test(funcg(xstring){ fmt.Println(x) }) } functest(ffunc(string)){ f("hello") }
最后, 看看下面两个正确程序的:
packagemain import( "fmt" ) varx="hello" funcmain(){ test(func(x*string){ *x="world" }) fmt.Println(x) } functest(ffunc(*string)){ } packagemain import( "fmt" ) funcmain(){ vars1="hello" vars2="world" test(func(x*string,y*string){ *x+="_123" *y+="_456" },&s1,&s2) fmt.Println(s1,s2)//hello_123world_456 } functest(ffunc(*string,*string),s1*string,s2*string){ f(s1,s2) } packagemain import( "fmt" ) vars1="hello" vars2="world" funcmain(){ test(func(x*string,y*string){ *x+="_123" *y+="_456" }) fmt.Println(s1,s2)//hello_123world_456 } functest(ffunc(*string,*string)){ f(&s1,&s2) }
以上就是如何在golang中使用匿名函数,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注恰卡编程网行业资讯频道。
目录
推荐阅读
-
Golang中的nil和零值怎么声明
Golang中的nil和零值怎么声明这篇文章主要讲解了“Golan...
-
golang Gob怎么使用
-
golang切片长度与容量指的是什么
golang切片长度与容量指的是什么今天小编给大家分享一下gola...
-
golang循环遍历map的方式有哪些
-
golang如何添加list元素
-
golang包的特性有哪些
golang包的特性有哪些这篇文章主要介绍了golang包的特性有...
-
如何从 PHP 过渡到 Golang?
我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗...
-
golang web从入门到精通 获取请求头信息、GET(POST)请求参数
-
适合PHP转Golang的函数类库
近几年Golang越来越火了,很多之前写PHP的也开始投入到Golang的怀抱中,今天小编给大家推荐一个挺好用的适合php转go的...
-
Golang编程 golang实现php函数json_decode()
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~