闭包的概念是有点抽象的,光从概念上去理解,有点晦涩。
闭包=函数+引用环境;只看这句话是不是有点懵逼,别慌,先看一段闭包的真实代码:
继续阅读“聊聊go语言的闭包”啥叫内存逃逸?
简单的讲就是本该分配到栈上的变量,跑到了堆上,这就导致了内存逃逸
常见的go、java语言都会有内存逃逸的情况,我们常用的函数以及局部变量通常是分配到栈上的,但是一旦出现内存逃逸,变量就会分配到堆上。
继续阅读“go语言的内存逃逸”锁是编程语言中比较常用到的一种技术;通常在并发的情况下,多核多个线程同时修改相同的资源时,为了保护我们的资源不会出现脏数据,会用锁来解决这个问题。
并发情况下,为什么修改相同的资源,会有问题;我们得先弄清楚数据修改的过程是怎样的。
Go语言中的slice,通俗的来说就是动态的数组;我们都知道,数组的长度是固定的,一旦声明后,数组的长度是固定的;但是slice的长度是不固定的,声明后,仍然可以继续增加slice的长度,我们先看一下slice的数据结构是怎样的。
继续阅读“如何理解go语言的slice”