November 2017
Intermediate to advanced
670 pages
17h 35m
English
We must pass a context object that is passed to a withContext function that creates a new request object, based on the context. However, since the context is empty, this is what we might refer to as code ceremony. Note that in the next chapter on functional APIs we’ll cover passing request contexts in more depth. In this case, ctx is something we must pass so that our code compiles:
ctx := context.Background() . . . br, err := handler.Client.Bucket(bucketName).Object(fullPath).NewReader(ctx)
Our errors package allows us to wrap our error with a specific error message and not lose the error message from GCP:
if err != nil { return false, errors.Wrapf(err, "bucket reader error for %s", fullPath)} else {
Again, we see the idiomatic ...