在非零错误返回值的情况下,通常其他参数保留为其类型的零值 ,对于io.Reader (它是一种接口类型)应该nil : return nil, err 调用者负责首先检查返回的错误,并且如果错误nil ,则仅继续使用其他返回值。 这是一般的“规则”。 当然可能有例外,在这种情况下,你应该记录异常的行为。 实际上,提供其他值以及非零错误没有任何问题,并且通常很有用。 典型的例子是io.Reader.Read()方法,它记录了实现应该(必须)的工作方式: 它返回读取的字节数(0 <= n <= len(p)) ...