context.TODO().Err() 将始终返回 nil,这在源代码中很容易看出:package context// An emptyCtx is never canceled, has no values, and has no deadline.type emptyCtx intfunc (*emptyCtx) Err() error { return nil}// ...var ( todo = new(emptyCtx))// ...// TODO returns a non-nil, empty Context. Code should use context.TODO when// it's unclear which Context to use or it is not yet available (because the// surrounding function has not yet been extended to accept a Context// parameter).func TODO() Context { return todo}