Recent Posts

Litecoin (LTC) 算法

跟之前分析过的 BTC 算法类似,Litecon (LTC) 的算法也是寻找一个整数(nonce),以满足某个要求。它使用了 Scrypt 哈希算法,而不再是两次 sha256。以 …

Go 语言里的接口赋值问题

Go 语言里的接口,先看定义:

type iface struct {
    tab  *itab
    data unsafe.Pointer
}

type eface struct {
    _type *_type
    data  unsafe.Pointer
}

其中 iface 描述接口变量(比如 var x IA)的内容及布局,变量大 …

Go 语言里的 errors 错误包装处理

Go 语言在返回错误时,允许进行 Wrap 包装。比如,函数 f() 调用函数 g(),在遇到错误、但处理不了时,可以这样:

func e() {
    // ...
    if err := f(); err != nil {
        fmt.Printf …

Go 语言里的 panic 状态位置问题

这里记录一下 Go 语言里 panic 的状态信息的变化和处理。用几个例子进行对比,后面是结论。

0x0 先看一个常见情况

func main() {
    defer func() {
        fmt …

Go 语言里的单元测试覆盖率

Go 语言的项目里,单元测试一般这样写:

func Test_Xxx(t *testing.T) {
    if err := Xxx(); err != nil {
        t.Errorf("bad")
    } else {
        t.Logf("ok")
    }
}

输入命令 go test -v 运行测试,并观察结果。

PASS …

Go 语言里 defer, panic 和 named return values

Go 语言里,函数过程中通过 defer 注册的回调,会在函数结束前、按 LIFO 的顺序调用执行。有名返回值(named return value)在编程时,恰当的变量 …

Go 语言里的 slice 切片

变量的 pass-by-value

Go 语言里的切片 slice,主要是针对数组类型不够灵活的问题。比如,a [50]intb [80]int 是不同的类型,但同一个 slice s []int …

Go 语言里的 range 问题

Golang 类似于 C/C++,同时又从其他语言(比如 Python)里借鉴了一些语法,比如 range。

在使用上,range 有一些特性,如果不注意的话,很容易引起 …

Go 语言里的 defer 参数传值问题

使用 defer 时遇到的一些问题,专门记录一下。

先说结论,defer 函数时,所有变量是按值(Go 语言都是传值)来暂存,等到作用域结束前 …

Zynq USB Drive Issue

※ 问题

Zynq 开发板,操作系统有时无法识别到优盘。

※ 调试

检查 Linux 里的 USB 驱动及配置。对比 Xilinx 的参考文档和示例,调试用的 kernel config、device …