Errata
The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".
The following errata were submitted by our customers and approved as valid errors by the author or editor.
Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update
Version | Location | Description | Submitted By | Date submitted | Date corrected |
---|---|---|---|---|---|
Safari Books Online | chap 1 5th paragraph before Deadlocks, Livelock, and Starvation section and last paragraph |
1) The sentence, "Synchronizing access to the memory in this manner also has performance ramifactions." misspells ramifactions. |
Charles Sharp | Jul 27, 2017 | |
ePub | Page chap 3 Pool chapter |
In Chapter 3 Pool section we got a feeling that objects keep in the pool are permanent. There is no mention of the temporary nature of the objects store in sync.Pool. Furthermore, there is even a sentence saying: Note from the Author or Editor: |
Tomasz Walaszek | Sep 13, 2017 | |
Safari Books Online |
Timeouts and Cancellation paragraph |
reallyLongCalculation function example is named reallyLongCaluclation in the text. Similarly is for longCalculation function. |
Tomasz Walaszek | Oct 02, 2017 | |
Printed | Page xi Acknowledgement section title |
Acknowledgement becomes Acknowledgment. |
Anonymous | Nov 29, 2017 | |
Safari Books Online | Chapter 1 Under Live Lock section: Chapter 1, The order of the defered statements should be reversed |
walk := func(walking *sync.WaitGroup, name string) { |
Sathish Gampa | Feb 13, 2018 | |
Safari Books Online |
Chapter 3 Go’s Concurrency Building Blocks |
1. "single upstream writeer" should be "single upstream writer" |
Vasko Zdravevski | Jul 05, 2017 | Jul 18, 2017 |
Mobi | Page 1 Chapter 4 -> Pipelines -> Best Practices for Constructing Pipelines. |
The generator function takes in a variadic slice of integers, constructs a Note from the Author or Editor: |
Haoran Feng | Oct 08, 2017 | |
Printed | Page 16 2nd paragraph |
Should the start of the paragraph, "When we discussed livelocks", be changed to "When we discussed deadlocks" instead? Note from the Author or Editor: |
Anonymous | Oct 20, 2017 | |
Printed | Page 28 3rd paragraph |
The problem is with the phrase "perl programmers would probably disagree!" -- Perl should be capitalized, as it is the name of the language. Lowercase "perl" is the name of the interpreter. Note from the Author or Editor: |
Dmitri Tikhonov | Oct 13, 2017 | |
Printed | Page 38 2nd paragraph from the bottom |
The sentence "What makes goroutines unique to Go are their deep integration with Go's runtime." is grammatically incorrect. Since "integration" is singular, "is" must be used instead of "are:" |
Dmitri Tikhonov | Oct 15, 2017 | |
Printed | Page 40 3rd paragraph |
In the very first line of the 3rd paragraph on p.40, there's a phrase that "the rest of the rest of the main function for simplicity...". |
Yoshi Yamaguchi | Dec 26, 2017 | |
Page 55 code sample |
In the increment and decrement section are for loops. They should run from i = 0 to i <= 5, but with the i-- this would end up in two endless loops.This should be a i++. |
mike e. | Apr 23, 2017 | Jul 18, 2017 | |
Printed | Page 59 4th para (2nd of Pool section) |
There is an extra 'a' in the first sentence: At a high level, a the pool pattern... |
Gavin Massingham | Aug 13, 2017 | |
Printed | Page 63 1st paragraph |
The first sentence has extra "like": "Looks like like roughly 1E9 ns/op." |
Yoshi Yamaguchi | Jan 05, 2018 | |
Printed | Page 73 Code annotation 3 |
The annotation states that the buffered channel has a capacity of one, but the code actually shows a capacity of four. |
Oliver Butterfield | Nov 13, 2017 | |
Printed | Page 73 Last paragraph |
The final paragraph reads "... our anonymous goroutine is able to place all five of its results on the intstream and exit before the main goroutine pulls even one result off:" Note from the Author or Editor: |
Alex Howle | Apr 03, 2018 | |
Printed | Page 82 Code Sample |
I would think that the workCounter/Sleep operations would be placed inside the default case to simulate work to be done while waiting for the done channel to close as opposed to being part of the for loop. Note from the Author or Editor: |
Austin | Mar 14, 2018 | |
Printed | Page 102 4th paragraph |
In the sentence, "we can pass add and multiple around...", the monospaced word "multiple" must be the function name mentioned in the previous sample code and it should be "multiply". |
Yoshi Yamaguchi | Jan 27, 2018 | |
Printed | Page 116 last paragraph |
In the sentence "now that we have four goroutines", it says there are 4 goroutine in the sample shown above, it should be eight goroutines, as the number of goroutines should be the same as `runtime.NumCPU()`, which is eight. Note from the Author or Editor: |
Yoshi Yamaguchi | Feb 05, 2018 | |
Printed | Page 120 Code sample tee-channel |
There seems to an error in the syntax for the return values. |
Tobias Mühlberger | Aug 28, 2017 | |
Printed | Page 125 Code sample |
The printed version is `long := sleep(done, 4*time.Second, short)`, but should this be `long := sleep(done, 4*time.Second, buffer)` instead? |
Anonymous | Jan 28, 2018 | |
Printed, PDF, ePub | Page 158 last paragraph |
In the first sentence, "We've made some progress: `reallyLongCaluculation` is...", the function name has typo. It is `reallyLongCalculation` (extra 'u' exists between 'l' and 'c' in 'Calculation') |
Yoshi Yamaguchi | Mar 03, 2018 | |
Printed, PDF, ePub, Mobi | Page 159 5th paragraph |
In the source snippet before the 5th paragraph, the function name is `wrietTallyToState`. However, in the 5th paragraph, it's written like "...call to `writeToState`". Note from the Author or Editor: |
Yoshi Yamaguchi | Mar 05, 2018 | |
Printed, PDF, ePub, Mobi | Page 172 the 2nd last paragraph |
In the sentence "the goroutines will sleep for a random amount of time between one and six nanoseconds to simulate load", the order of sleeping duration is "nanosecond", in the example code, the duration is set in "second" order as the following: |
Yoshi Yamaguchi | Mar 11, 2018 | |
Printed, PDF, ePub, Mobi | Page 179 The last paragraph |
In the sentence "Later this will help stress our `APIClient` and exercise our rate limiter", though the variable "APIClient" is mentioned, it doesn't come up in the source code samples in the book. I think it should be "APIConnection". |
Yoshi Yamaguchi | Mar 17, 2018 | |
Printed, PDF, ePub, Mobi | Page 181 6th paragraph |
`rates` package should be `rate` package. (no 's') |
Yoshi Yamaguchi | Mar 18, 2018 |