摘要: defer和go一样都是Go语言提供的关键字。defer用于资源的释放,会在函数返回之前进行调用。一般采用如下模式: 如果有多个defer表达式,调用顺序类似于栈,越后面的defer表达式越先被调用。 不过如果对defer的了解不够深入,使用起来可能会踩到一些坑,尤其是跟带命名的返回参数一起使用时。 阅读全文
posted @ 2018-06-16 22:05 davygeek 阅读(237) 评论(0) 推荐(0) 编辑
摘要: Go中的map在底层是用哈希表实现的,你可以在 $GOROOT/src/pkg/runtime/hashmap.goc 找到它的实现。 数据结构 哈希表的数据结构中一些关键的域如下所示: 上面给出的结构体只是Hmap的部分的域。需要注意到的是,这里直接使用的是Bucket的数组,而不是Bucket* 阅读全文
posted @ 2018-06-16 20:48 davygeek 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 在内存中的形式 首先看一下在go中,一些基础类型在内存中是以什么形态存在的,如下图所示: 变量j的类型是int32, 而变量i的类型是int,两者不是同一个类型,所以赋值操作i=j是一种类型错误cannot use j (type int32) as type int in assignment。 阅读全文
posted @ 2018-06-16 20:29 davygeek 阅读(1410) 评论(0) 推荐(0) 编辑