使用 dlv 进行 debug
使用 dlv
可以方便的对 go
生成的二进制文件进行 debug
,以下面的代码 main.go
为例讲解 dlv
的使用
1 | package main |
使用 dlv
可以方便的对 go
生成的二进制文件进行 debug
,以下面的代码 main.go
为例讲解 dlv
的使用
1 | package main |
宏可以帮助我们减少重复代码的编写,在 Rust 中有两种宏定义,
其中,声明宏只是简单的 token
替换,我们无法知道代码结构中的其他信息,过程宏可以获取更加详细的数据,比如我们可以获取结构体中字段的名称,类型等等。
在调用函数的时候,可能参数比较多,但是我们只需要修改其中的几个特定参数就可以满足我们的需求,而其他的参数我们希望保持不变,但是 Rust 和 Go 一样,函数调用中不支持默认参数,所以我们必须另寻他法,那么第一感觉我们是不是可以采用 Go 中的 选项模式呢?
虽然 Rust 函数中并不支持变参数传递,但是我们可以通过 宏
来间接达到相同的功能,代码如下
在 Go 语言中,本身提供了一些命令来展示代码的覆盖度,我们可以通过执行这些命令来查看哪些语句被测试覆盖到了,哪些没有,进而可以编写更多的 case 来提高代码的覆盖度。
执行下面的命令,可以得出项目里面所有 package 的覆盖度
1 | go test ./... -cover |
SPHINCS 于 2015 年由 Bernstein, Daniel J., Daira Hopwood, Andreas Hülsing 等人提出,具体的论文见 SPHINCS: practical stateless hash-based signatures。
SPHINCS 是一个无状态的签名系统。有状态指的是每次签名时需要记录系统的信息,比如是第几次签名,在验证的时候需要使用该参数,而无状态的签名系统则不需要保存这些信息。相对于有状态的签名系统,无状态的签名系统不需要记录签名的状态,符合标准的 API 且方便在不同主机上移植,无状态的签名系统是更好的选择。