12 2019 档案
摘要:当我们通过把一个现有(非interface)的类型定义为一个新的类型时,新的类型不会继承现有类型的方法。 神马意思?来一段简短错误的代码: 输出: 初步看代码貌似没啥问题。实际报错“myMutex类型没有字段或方法锁”?怎么解决?如果我们确实需要原有类型的方法,可以定义一个新的struct类型,用匿
阅读全文
摘要:在“range”语句中生成的数据的值其实是集合元素的拷贝。它们不是原有元素的引用。这就意味着更新这些值将不会修改原来的数据。我们来直接看段示例: 如果我们需要更新原有集合中的数据,使用索引操作符来获得数据即可: 好,重点来了!重点来了!重点来了!,重要的话说三遍,大部分博友们可能会踩坑. 这里我提前
阅读全文
摘要:recover 仅在延迟函数 defer 中有效,在正常的执行过程中,调用 recover 会返回 nil 并且没有其他任何效果.重要的事再说一遍:仅当在一个defer函数中被完成时,调用recover()才生效。 我们来一段错误的代码: 输出: 修改下,正确的代码: 输出: 重要的事再说一遍:re
阅读全文
摘要:先抛砖引玉defer的延迟调用:defer特性: defer用途: 好,废话不多说,实例加深理解,我们先看看一段代码 输出:4 3 2 1 0 ,defer 是先进后出,这个输出没啥好说的。 我们把上面的代码改下:defer 换上闭包: 输出:4 4 4 4 4,很多人也包括我。预期的结果不是 4
阅读全文