首页 > 其他分享 >defer slice 和 map 面向对象的特征

defer slice 和 map 面向对象的特征

时间:2024-02-12 23:22:07浏览次数:30  
标签:defer slice 10 程序 map func recover panic

5、defer

defer语句被用于预定对一个函数的调用。可以把这类被defer语句调用的函数称为延迟函数。
defer作用:
●释放占用的资源
●捕捉处理异常
●输出日志


结果

如果一个函数中有多个defer语句,它们会以LIFO(后进先出)的顺序执行。

    recover错误拦截

运行时panic异常一旦被引发就会导致程序崩溃。

Go语言提供了专用于“拦截”运行时panic的内建函数“recover”。它可以是当前的程序从运行时panic的状态中恢复并重新获得流程控制权。


注意:recover只有在defer调用的函数中有效。

示例代码


结果


如果程序没有异常,不会打印错误信息。
  Go     复制代码     1   func recover interface{}       Go     复制代码     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27   package main   import "fmt"   func Demo(i int) { //定义10个元素的数组 var arr [10]int //错误拦截要在产生错误前设置 defer func() { //设置recover拦截错误信息 err := recover() //产生panic异常 打印错误信息 if err != nil { fmt.Println(err) } }() //根据函数参数为数组元素赋值 //如果i的值超过数组下标 会报错误:数组下标越界 arr[i] = 10   }   func main() { Demo(10) //产生错误后 程序继续 fmt.Println("程序继续执行...") }       Plain Text     复制代码     1 2   runtime error: index out of range 程序继续执行...

标签:defer,slice,10,程序,map,func,recover,panic
From: https://www.cnblogs.com/chenxiaomeng/p/18014251

相关文章

  • [转帖]linux参数之max_map_count
    https://www.cnblogs.com/duanxz/p/3567068.html “Thisfilecontainsthemaximumnumberofmemorymapareasaprocessmayhave.Memorymapareasareusedasaside-effectofcallingmalloc,directlybymmapandmprotect,andalsowhenloadingsharedlibr......
  • 使用UMAP降维可视化RAG嵌入
    大型语言模型(LLMs)如GPT-4已经展示了出色的文本理解和生成能力。但它们在处理领域特定信息方面面临挑战,比如当查询超出训练数据范围时,它们会产生错误的答案。LLMs的推理过程也缺乏透明度,使用户难以理解达成结论的方式。检索增强生成(RAG)在LLMS的工作流程中添加了一个检索步骤,......
  • Go语言精进之路读书笔记第14条——了解map实现原理并高效使用
    14.1什么是mapmap对value的类型没有限制,但是对key的类型有严格要求:key的类型应该严格定义了作为“==”和“!=”两个操作符的操作数时的行为,因此func、map、slice、chan不能作为map的key类型。map类型不支持“零值可用”,未显式赋初值的map类型变量的零值为nil。对处于零值状态的......
  • pandas.Series.map() 与 pandas.Series.apply() 的区别!
    pandas.Series.map()与pandas.Series.apply()的区别!输出多列要用apply!输入单列输出单列map,apply输出多列输入多列applypandas.Series.map()和pandas.Series.apply()都是Pandas库中的方法,用于对Series中的每个元素进行操作。但是,它们在使用和功能上有一些区别¹²⁴......
  • 盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?
    写在开头在Java的世界里万物皆对象。但我认为是万物皆数据,世界由各种各样数据构建起来,我们通过程序去实现数据的增删改查、转入转出、加减乘除等等,不同语言的实现方式殊途同归。由此可见,数据对于程序语言的重要性。这段话是在写数据类型那篇博客时说的,当时是为了引入Java中数据......
  • 并发容器【ConcurentHashMap、CopyOnWriteArrayList、阻塞队列、ArrayBlockingQueue】
    (并发容器)转自极客时间什么是并发容器?在JUC包中,有一大部分是关于并发容器的,如ConcurrentHashMap,ConcurrentSkipListMap,CopyOnWriteArrayList及阻塞队列。这里将介绍使用频率、面试中出现频繁的最高的ConcurrentHashMap和阻塞队列。注意:这里说到的容器概念,相当于我们理解中......
  • 面试经典:Java中list set map之间的区别
    前言大家好,我是chowley,最近正在复习Java集合,这次来总结一下list、set、map它们三个之间的区别。1.List(列表)定义:List是一种有序集合,允许存储重复元素,每个元素都有一个索引,可以按照插入顺序获取。特点:允许存储重复元素。有序集合,保留元素的插入顺序。可以通过索引访问元素。常见实现......
  • Java 中的属性类Properties 以及TreeSet和TreeMap
    属性类Propertiesimportjava.util.Properties;/**目前只需要掌握Properties属性类对象的相关方法即可*Properties是一个Map集合,继承Hashtable,Properties的key和value都是String类型*Properties被称为属性类对象*Properties是线程安全的**/publicclassProperties......
  • Hive:构建于 Hadoop 之上、让你像写 SQL 一样编写 MapReduce 程序
    Hive介绍本次我们来聊一聊Hive,它是由Facebook开源的一款基于Hadoop的数据仓库工具,用于解决海量结构化日志的数据统计与分析。Hive通过将结构化的数据映射为一张表,并提供类SQL查询功能,让开发人员能够编写SQL进行数据分析。在介绍Hadoop的时候我们说过,使用MapReduce......
  • [Go] Defer keyword
    defermakesuretheoperationwillbeexecutedattheendofafunction.funcloadChampions()([]champion,error){ file,err:=os.Open("tft_champions.json") iferr!=nil{ returnnil,err } deferfile.Close() varchampions[]champion......