Guava Preconditions允许轻松检查 Java 中的方法参数。
public void doUsefulThings(Something s, int x, int position) {
checkNotNull(s);
checkArgument(x >= 0, "Argument was %s but expected nonnegative", x);
checkElementIndex(position, someList.size());
// ...
}
如果不满足条件,这些检查方法会引发异常。
Go 没有异常,但会用返回值指示错误。所以我想知道上述代码的惯用 Go 版本会是什么样子。
最佳答案
这取决于上下文。
如果 doUsefulThings
是从包中导出的公共(public)函数,则返回一个错误
。您可以导出可以返回的包级 error
变量,调用者可以检查返回的 error
是否等于已记录的搞砸方法之一。
如果它没有被导出,并且错误地调用它会是程序员的错误,我认为 panic(errors.New("bla bla bla"))
是合理的。尽管一旦您取消引用该指针,该函数就会崩溃,无论如何。
为此:checkArgument(x >= 0, "Argument was %s but expected nonnegative", x)
你可以传入 uint
。
关于java - 如何在 Go 中检查函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12568266/