Issue | Resolution | Reporter |
Page 10. URL change. | The URL for gonow has changed to
https://github.com/kisom/GoNow.
|
Gary Scarr |
Page 17. Typesetting error. | In the console output shown after the first
paragraph the last 333 at the bottom should be two spaces to
the right. |
Author |
Page 21. Spurious text. | The first line of the last paragraph on this
page has the text keyword!!struct ; this should be deleted. |
Mikhail Strebkov |
Page 40. Tiny typo. | In the final paragraph of section 1.6. replace “suppport” with “support”. | Ryan Boehning |
Page 52. Tiny typo. | In the first line replace “lines it it” with “lines it is”. | Manuel Kiessling |
Page 54. Clarification/correction. | Replace the paragraph that begins “On the
other hand,” with: “On the other hand, if the right-hand code snippet didn't have iota , Cyan must be given an explicit value, and
Magenta would be set to Cyan 's value and
Yellow would be set to Magenta 's value. So, if
Cyan was set to, say 9, then they would all be set to 9. We can
use both iota and explicit values. For example, we could set
Cyan to iota (so its value will be 0), give no value
to Magenta (so it becomes 1 due to Cyan 's
iota ), and Yellow to 5. If we then added
Black it would have the previous constant's value (i.e.,
Yellow 's 5), unless we gave it an explicit value.” |
Luca Boasso |
Page 55. Wrong word. | In this page's first paragraph replace the phrase “Go's bitwise flags” with “Go's bitwise operators”. | Luca Boasso |
Page 117. Tiny typo. | The function
utf.DecodeLastRuneInString() should, of course, be
utf8.DecodeLastRuneInString() . |
Luca Boasso |
Page 140. Wrong information. | I claimed that Go does copy on write when using augmented assignment with strings, but actually a new string is created under the hood. Replace the phrase “behind the scenes Go must do a copy on write ... was being used”, with “behind the scenes Go must create a new string and copy the original string and the added string into it, which is potentially expensive for large strings.”. | Jonathan Amsterdam |
Page 142. Wrong value in Figure 4.2 | In Figure 4.2 the Value for the statement
pi := &y (i.e., the third column's value) should be
22 not y . |
Darin Greaham |
Page 247. Bug. | The computeIndent() function will
hang if the indent isn't exactly four spaces. To fix this,
increment i just before the first return call:
if char != whitespace { i++ // FIX: will now work for any non-zero indent return strings.Repeat(string(whitespace), i), i }This correction has been made to the indent_sort/indent_sort.go
file in the archive files. (Note that the function will fail if the data
has no or inconsistent indentation.)
|
Alexander Häckel |
Page 263. Subtle error. | In the first paragraph replace the phrase “method's type” with “receiver's type”. | Luca Boasso |
Page 336. Incorrect phrase. | In the penultimate paragraph, replace “is a closure which has captured” with “communicates using the”. | Luca Boasso |
Pages 341–348. Additional notes. | I did some speed testing against an access.log file of 572MB (2.6M lines) on a quad core AMD-64 3GHz machine. | Author |
Program | Time | Notes |
---|---|---|
apachereport1 | 13.8s | The file is read in one goroutine which feeds lines to four other goroutines who populate a safe map in its own goroutine. |
apachereport2 | 13.9s | The file is read in one goroutine which feeds lines to four other goroutines who populate a map which is protected by a mutex. |
apachereport3 | 14.8s | The file is read in one goroutine which feeds lines to four other goroutines who populate their own independent maps which are merged as each worker goroutine finishes. |
apachereport4 | 11.5s | The file is read in one goroutine which feeds lines to four other goroutines who populate a safe slice in its own goroutine. |
apachereport5 | 07.4s | Four goroutines each open the same file and read lines from their own quarter of it. They populate their own independent maps which are merged as each worker goroutine finishes. (This example was added after the book was published; it is now included with the book's source code.) |
Keen experimenters might like to do their own timings and then create
new versions (e.g., apachereport6
based on
apachereport1
and apachereport7
based on
apachereport2
etc.), but where each goroutine opens the same
file and reads in its own lines like apachereport5
does.
Issue | Resolution | Reporter |
Pages 401-416 | A small batch of books was printed with one 16-page sheet missing—pages 401-416. Please check that these pages are present if buying in a book store. If you buy online and these pages are missing, you could go through the returns process for a free replacement, or alternatively ask me for a PDF of the missing pages. I'm very sorry for the inconvenience. | Author |
Page 439. Missing URL. | In the last paragraph, in addition to www.endsoftpatents.org and www.nosoftwarepatents.com, I should have included www.eff.org/patent. | Author |
Page 439. Update. | The European Parliament has now passed into law, European Unitary patents (including software patents). They are due to come into force 2014-01-01. The European patent office will both grant patents and be the final arbiter for disputes (not the European Court of Justice). So Europeans can now expect even worse patent troll shakedowns than those in the U.S. | Author. |
Your Privacy • Copyright © 2006 Qtrac Ltd. All Rights Reserved.