在编写测试代码时,我会做很多这样的事情

if (!cond) {
    t.Fatal("error message")
}

这有点乏味。所以我想实现以下目标
CHECK(cond, "error message")

所以我尝试了
func CHECK(t *testing.T, cond bool, fmt string, a ...interface{}) {
  if !cond {
    t.Fatal(fmt, a)
  }
}

如果它是C宏,它会完美地工作。但是在Go中,失败的行号是错误的。

有解决办法吗?

最佳答案

可悲的是你不能那样做。

一种解决方法是自己获取行/函数,类似于https://stackoverflow.com/a/25954534/145587的trace函数。

关于macros - Go:类似于C的宏,用于编写测试代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26096496/

10-15 21:50