当前位置: 首页 > news >正文

李继红跪舔坊网站建设seo点击软件排名优化

李继红跪舔坊网站建设,seo点击软件排名优化,网站美工培训,优化王Go语言函数高级篇1.高阶函数函数作为参数函数作为返回值2.匿名函数3.defer4.内置函数1.高阶函数 高阶函数分为函数作为参数和函数作为返回值两部分。 函数作为参数 函数可以作为参数#xff1a; package mainimport fmtfunc add(x, y int) int {return x y }… Go语言函数高级篇1.高阶函数函数作为参数函数作为返回值2.匿名函数3.defer4.内置函数1.高阶函数 高阶函数分为函数作为参数和函数作为返回值两部分。 函数作为参数 函数可以作为参数 package mainimport fmtfunc add(x, y int) int {return x y }func mul(x, y int) int {return x * y }func calc(x, y int, op func(int, int) int) int {return op(x, y) }func main() {res : calc(10, 20, add)fmt.Println(res) // 30resP : calc(10, 20, mul)fmt.Println(resP) // 200 }函数作为返回值 函数也可以作为返回值 package mainimport (errorsfmt )func add(x, y int) int {return x y }func mul(x, y int) int {return x * y }func do(s string) (func(int, int) int, error) {switch s {case :return add, nilcase *:return mul, nildefault:return nil, errors.New(无法识别)} }func main() {f, err : do()fmt.Println(err, f(10, 20)) // nil 30f2, err2 : do(-)fmt.Println(f2, err2) // nil 无法识别 }2.匿名函数 函数当然还可以作为返回值但是在Go语言中函数内部不能再像之前那样定义函数了只能定义匿名函数。匿名函数就是没有函数名的函数匿名函数的定义格式如下 func(参数)(返回值){函数体 }匿名函数因为没有函数名所以没办法像普通函数那样调用所以匿名函数需要保存到某个变量或者作为立即执行函数: package mainimport fmtfunc main() {// 将匿名函数保存到变量add : func(x, y int) {fmt.Println(x y)}// 调用匿名函数add(10, 20) // 30// 自执行函数匿名函数定义完加()直接执行func(x, y int) {fmt.Println(x y)}(20, 20) // 40 }3.defer Go语言中的defer语句会将其后面跟随的语句进行延迟处理。在defer归属的函数即将返回时将延迟处理的语句按defer定义的逆序进行执行也就是说先被defer的语句最后被执行最后被defer的语句最先被执行。 package mainimport fmtfunc main() {fmt.Println(开始)defer fmt.Println(1)defer fmt.Println(2)defer fmt.Println(3)fmt.Println(结束) }结果 开始 结束 3 2 1由于defer语句延迟调用的特性所以defer语句能非常方便的处理资源释放问题。比如资源清理、文件关闭、解锁及记录时间等 defer执行时机 在Go语言的函数中return语句在底层并不是原子操作它分为给返回值赋值和RET指令两步。而defer语句执行的时机就在返回值赋值操作后RET指令执行前。具体如下图所示 4.内置函数 panic/recover Go语言中目前Go1.12是没有异常机制但是使用panic/recover模式来处理错误。 panic可以在任何地方引发但recover只有在defer调用的函数中有效。 首先来看一个例子 package mainimport fmtfunc funcA() {fmt.Println(func A) }func funcB() {panic(panic in B) }func funcC() {fmt.Println(func C) } func main() {funcA()funcB()funcC() }输出 func A panic: panic in Bgoroutine 1 [running]: main.funcB(...)D:/SystemData/mine/Go-Page/hello.go:10 main.main()D:/SystemData/mine/Go-Page/hello.go:18 0x66Process finished with the exit code 2程序运行期间funcB中引发了panic导致程序崩溃异常退出了。这个时候我们就可以通过recover将程序恢复回来继续往后执行。 package mainimport fmtfunc funcA() {fmt.Println(func A) }func funcB() {defer func() {err : recover()if err ! nil {fmt.Println(recover in B)}}()panic(panic in B) }func funcC() {fmt.Println(func C) } func main() {funcA()funcB()funcC()// func A// recover in B// func C }recover()必须搭配defer使用defer一定要在可能引发panic的语句之前定义
http://www.hkea.cn/news/14292543/

相关文章:

  • 手机端网站做app耒阳建设局官方网站
  • 好的漂亮的淘宝客网站模板wordpress本地头像
  • 重庆网站建设尚智逢源合肥网站建设企业
  • 惠州做网站的公司怎么宣传自己的店铺
  • 网站外链建设原则深圳市住房和城乡建设局网站
  • 设计网站账号娱乐类网站开发
  • 什么是网站策划书泰安放心的企业建站公司
  • 制作免费网站的平台做货代的有哪些网站
  • 奇迹网页游戏排行优化关键词的方法
  • 网站建设的方案书wordpress 论坛小程序
  • 柳州网站设计外贸电商网站建设
  • 做网站建设培训外贸网站经典营销案例
  • 株洲网站建设方案咨询专业的开发网站建设价格
  • wordpress防盗图网站优化 seo
  • 搜狐快站做的手机网站要建立网站是否要先做网页设计_然后把网页设计与数据库连接起来?
  • 专做ppt的网站济南手机网站
  • 免费国外网站空间python php网站开发
  • 设计手机网站页面尺寸大小做网站公
  • 台州网站建设方案学生网站建设实训总结
  • 新闻资讯网站怎么做网站怎么做图片转换
  • 镇江网站建设远航网络关于做书的网站
  • 电子商务和网站开发 职务安徽省住房和城乡建设厅门户网站
  • 建立团购网站做的网站加载太慢怎么办
  • 合肥义城建设集团有限公司网站网站设计平台 动易
  • 用vultr做网站外贸建网站免费模板
  • 网站怎么管理在线修图编辑器
  • 网站如何制作多少钱电商类网站开发项目流程
  • 计生网站生育文明建设望京做网站的公司
  • wordpress建外贸站平面设计有前景吗
  • 新乡市网站建设电脑培训班网上购物商城系统论文