作为一个半业余程序员(工作不稳定,啥都需要做一点),经常需要对接各种奇奇怪怪的项目,文档不全十有八九,所以各种编程语言的调试运行都要懂一点。下面就讲讲常见的编程语言的调试方法。

go

一般 go 语言项目会使用自带的 “testing” 库进行测试,使用 t.Log(..) 函数就可以打印出数值。

t.Run("round trip secp", func(t *testing.T) {
    var buf bytes.Buffer
    var out crypto.Signature
    require.NoError(t, a.MarshalCBOR(&buf))
    t.Log(buf)
    require.NoError(t, out.UnmarshalCBOR(&buf))
    require.True(t, out.Equals(&a))
})

打印的时候如果类型有实现 String() 方法就会调用,如果没有则直接打印出结构体. 上面的例子就会直接打印出 bytes.Buffer 的结构体:

{[69 1 1 2 3 4] 0 0}

我们需要的 binary 就是 [69 1 1 2 3 4] 这一段(256 进制)。

注意在执行 test 时要加上 -v 才能看到打印的字符。

go 的 package 是和文件目录结构挂钩的,所以如果想运行某个子文件里的某个测试,就需要先进到子文件的目录底下。再使用 -run TestName 来执行特定的测试。

go test -v -run TestSignatureSerializeRoundTrip

Ljzn
399 声望102 粉丝

网络安全;函数式编程;数字货币;人工智能