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是从程序包导出的公共函数,则返回错误.您可以导出导出的包级别错误变量,然后返回,调用者可以检查返回的错误是否等于记录的错误之一.
如果未导出,则错误地调用它会是程序员的错误,我认为应该对此感到恐慌(errors.New(“ bla bla bla”)).尽管无论如何,一旦取消引用该函数,该函数都会感到恐慌.
为此:checkArgument(x> = 0,“参数为%s,但预期为非负数,x),您可以传入uint.