> 通过本节的学习以避免掉入基础的 defer 陷阱中 本文只适合想要进阶学习 Golang 的新手阅读,大牛请绕道。 ## #1 -- defer nil 函数 如果一个延迟函数被赋值为 `nil` , 运行时的 [`panic`](https://golang.org/ref/spec#Handling_panics) 异常会发生在外围函数执行结束后而不是 `defer` 的函数被调用的时候。 例子 ```go func() { var run func...
-
Go 中 defer 的 5 个坑 - 第一部分
-
Go HTTP请求处理——net/http包
Go 语言中处理 HTTP 请求主要跟两个东西相关:ServeMux 和 Handler。 一、ServeMux 和 Handler ServrMux 本质上是一个 HTTP 请求路由器(或者叫多路复用器,Multiplexor),它把收到的请求与一组预先定义的 URL 路径列表做对比,然后在匹配到路径的时候调用关联的处理器(Handler)。 Handler(处理器)负责输出HTTP响应的头和正文,任何满足了http.Handler接口的对象都可作为一个处理器。通俗的说,对象只要有个如下签名的...
-
Cgo 和 Python
如果你研究过 [新近的 Datadog Agent](https://github.com/DataDog/datadog-agent/) ,你可能会注意到大部分代码库是用 Go 语言编写,而我们用来收集指标的检查工具仍然是用的 Python 。这是有可能的,因为 Datadog Agent(一个标准的 Go 二进制程序),内嵌了一个 CPython 解释器,在需要运行 Python 代码的时候就会调用这个解释器。通过使用一个抽象层可以让整个过程是透明的,由此,你尽可以编写惯用的 Go 代码,...