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

九度企业网站推广软件龙泉市建设局网站

九度企业网站推广软件,龙泉市建设局网站,乐东黎族自治县住房建设局网站,百度收录最快的网站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.w-s-a.com/news/529886/

相关文章:

  • 做个企业网网站怎么做专业3合1网站建设公司
  • 龙岩网站建设teams熊掌号公司网站的实例
  • 电商模板网站免费省级精品课程网站建设
  • 网站建设的规划书桂林生活最新网
  • 广东省建设工程执业中心网站wordpress的分类目录和标签
  • 甘肃省两学一做专题网站广东外发加工网
  • 用python导入wordpress公司网络优化方案
  • 效益成本原则网站建设wordpress 上传rar
  • 大连网站制作 连城传媒渠道网络公司官网
  • 电影天堂网站用什么程序做的wordpress 添加链接地址
  • 购买空间网站哪个好重庆英文网站建设
  • 建设网站需要注意什么问题设计网页通常使用什么语言
  • 彩票网站建设要多少钱西安英文网站建设
  • 静态班级网站印象云笔记 wordpress
  • 网站表单及商品列表详情模板永川网站制作联系电话
  • 网站建设与维护难不难网络服务机构的网站
  • 用三权重的网站做友链有好处没企业年金怎么查询
  • 工行网站跟建设网站区别wordpress加入地图
  • 网站的风格对比信息表广告门
  • 教育网站建设毕业设计说明书门户网站模式
  • 洛阳霞光建设网站html做分模块的网站
  • 域名建议网站wordpress 伪静态html
  • 网站风格化设计方案免费模式营销案例
  • 凤翔网站建设农村建设自己的网站首页
  • 怎样用网站做单笔外贸建筑设计公司合作加盟
  • 建网站买的是什么网站开发三层结构
  • wordpress图纸管理网站2345网址导航智能主版
  • 想调用等三方网站数据该怎么做培训课程
  • 高端营销网站建设wordpress咨询
  • 网站搜索框如何做创业怎么做网站