William A

最新文章

FastCGI 协议初接触

准备 Nginx 配置 user root admin; worker_processes 2; events { worker_connections 1024; } http { include mime.types; default_type text/html; gzip on; gzip_types text/css text/x-component …

Github Pages 自定义域名

重新注册了个域名,有时候 web 开发没有域名还真是不方便。一下买了五年,美滋滋,当然顺便也要给 Github Pages 加个自己的烙印的。 为 Github Pages 添加自定义域名 如下进入设置页面,将自定义的域名填入Customer domain下的输入框中,如果要用 HTTPS 传输,则勾选Enforce HTTPS复选框。 效果就是在仓库中生成了一个 CNAME 文件,文件内容就是自 …

Go 代码测试

Go 有一个由go test命令和testing包组成的轻量级测试框架。testing包为 Go 包提供自动化测试支持,并和go test命令配合使用,自动运行符合以下形式的任意函数: func TestXxx(*testing.T) 被测试函数Xxx首字母为大写。在测试函数中使用Error、Fail或相关方法来标记失败。如果测试函数调用一个失败的函数,如t.Error或者t.Fail,则认为测试 …

Go 内部包

在 Go 语言中,所有成员在包内均可访问,无论是否在同一源码文件中。但只有名称首字母为大写的成员可导出,在包外可视。 但是在进行代码重构时,我们会将一些内部模块陆续分离开来,以独立包的形式维护。这时,基于首字母大小写的访问权限控制则显示过于粗犷。我们希望这些包的可导出成员仅在特定范围内可访问,而不是向所有用户公开。 内部包机制提供了这种访问权限控制:所有保存在 internal 目录下的包都只能被 …

Go 延迟调用

语句 defer 向当前函数注册稍后执行的函数调用。这些调用被称作延迟调用,因为它们直到当前函数执行结束前才被执行,常用于资源释放、解除锁定以及错误处理等操作。 延迟调用,注册的是调用,参数在注册时被复制并缓存起来。多个延迟注册按 FILO 的次序执行。 func main() { x, y := 1, 2 defer func(i int) { fmt.Println("defer x, …