和Java的finally类似,Go也提供了defer关键字用来做函数最后的收尾动作。虽然defer的用法看似简单,但是不理解其原理,依然会踩到很多坑。同时recover()也是需要通过和defer关键字配合使用。因此,这里简单分析一下de … 继续阅读 defer 源码分析
分类:Go
Goroutine Coroutines
Go Goroutine 在刚接触Go的时候,了解到Go特色之一便是协程,Go通过在用户态管理程序中所有的协程,使得其在Web方面能够轻松支撑起百万连接。这里简单梳理下协程与线程的区别以及Go如何解决协程中的问题。 为什么要有协程? 在早期 … 继续阅读 Goroutine Coroutines
Go汇编(二)
接Go汇编(一),理解Go一些前置条件之后,接下来通过实际分析来进一步分析Go源码编译之后的汇编语言。 有下面一段代码: func add(a int, b int) int { c := 1 n := sub(a, b, c) retur … 继续阅读 Go汇编(二)
Go汇编(一)
想要搞明白Go汇编相关知识,需要明确很多概念。由于Go通过编译之后生成的汇编语言依然是一种中间层,并不完全对应到CPU硬件的汇编,因此有一些冲突的概念需要仔细区分。在详细分析Go汇编之前,需要先理解这些前提条件,只有明白这些前提条件,才能更 … 继续阅读 Go汇编(一)