首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
guodf
掘友等级
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
63
文章 28
沸点 35
赞
63
返回
|
搜索文章
最新
热门
GO成神之路:defer中的坑|Go主题月
在深入defer(续)中我们已经列举了匿名返回值与具名返回值产生的疑惑,并在defer与return到底谁先执行?中通过汇编代码的角度进行了解答。
GO成神之路:defer与return到底谁先执行?|Go主题月
在深入defer(续)文章中我们列举了两个例子来分析defer与return的执行顺序,但是最终的结论是两种方案都说的通。 可是真正被编译后的代码,只能有一种方案是正确的,所以本片文章中我们将两个例子分别反汇,看看它们的区别是什么,再决定到底是谁先执行。 下面代码断中我们只关心…
GO成神之路:深入defer(续)|Go主题月
在《深入defer》这篇中我们解释了defer在代码中是如何运行的,上篇文章中我们遗留了一个问题,这篇文章我们解答一下这个问题。 在使用defer的时候,我们知道defer通常是用来释放io资源的,但是如果我们在defer中做一些其它的事情呢,那么程序的运行结果可能跟我们的预期…
GO成神之路: 详解channel(二)|Go主题月
上篇文章中我们提到的runtime.sendchan1和runtime.chanrecv1函数,Go会将它们分别封装的waitq对象,在hchan结构体中分别对应sendq和recvq字段。 这个字段用来记录当前chan支持的数据类型,它是在我们创建chan变量的时候被指定的。…
GO成神之路: 详解channel(一)|Go主题月
channel字Go中主要用来协程间传递数据,当然除了协程之外我们也可以使用全局变量,但是使用全局变量时,我们需要另外考虑协程安全的问题,而channel就是用来解决协程安全问题的一种实现方案,channel的实现其实也是通过Go提供的协程同步api实现的。 channel其实…
GO成神之路: for range避坑指南|Go主题月
for...range是go中用于遍历集合数据的语法糖,与for的不同之处在于range关键字会将集合中每个元素的值返回。 假如我们有这样一个集合[]int,使用range遍历数据时,range首先判断集合中每个元素类型为int,因为int在内存中对应的字节大小是明确的,所以r…
GO成神之路: new与make的区别|Go主题月
在编码时我们可以使用make来为特定的三种类型申请内存,而编译时go编译器会根据三种类型将make分别替换为不同的方法。 通过上面简化后的代码我们可以清楚看到make在编译后分别被编译器替换成了对应的函数。 通过以上代码及其汇编代码的分析,可以看到,其实所有类型的new函数对应…
GO成神之路:深入defer|Go主题月
在Go语言中提供了一个非常有用并且好用的语法糖就是defer关键字,这个关键字的作用是:为了在方法执行完成后执行一些操作,通常这些操作应该是释放一些IO资源,比如:文件IO,网络IO等,主要是为了防止一些IO资源没有被释放从而导致内存泄漏。 另外,我们也可以借助defer做一些…
GO成神之路:接口interface|Go主题月
接口是一组方法签名,所有实现了该签名的子类都可以赋值给这个接口变量。 go中有两种接口的使用场景:1. 用作类型签名,2. 空接口(无方法签名)
GO成神之路:你真的会使用数组与切片吗?|Go主题月
该片文章我将详细带领大家搞定这道面试必考题。 在众多常用的高级语言中比如:C#,Java,JavaScript等都有数组的概念。 如果你是以上语言的使用者,当被问及数组是什么的时候,第一反应就是数组是引用类型,指向的是一块内存的首地址。 其实这个回答没有什么问题,但是在Go中却…
下一页
个人成就
文章被点赞
62
文章被阅读
17,999
掘力值
710
关注了
5
关注者
33
收藏集
0
关注标签
0
加入于
2021-03-24