- add Go 1.17 contents
- support Go 1.16 embedding feature.
- support Go 1.16 embedding feature.
- describe more about reflect.DeepEqual related details.
- add a new syntax execption.
- point out that, since Go Toolchain 1.15, using make+copy to clone slices is always more efficient than using append to clone.
- remove the new detail added in 1.14.e: The behavior of comparing struct values with both comparable and incomparable fields or array values with both comparable and incomparable elements is unspecified. The reason is the behavior will be specified.
- add a new detail: About the impossible to-interface assertions which can be detected at compile time.
- All "Go SDK" uses are changed to "Go Toolchain".
- add a new detail: The behavior of comparing struct values with both comparable and incomparable fields or array values with both comparable and incomparable elements is unspecified.
- add a new detail: In struct value comparisons, blank fields will be ignored.
runtime.KeepAlive
related concents are removed from Unsafe Pointers article. I'm sorry for spreading some wrong information in this article before.
- fix a bug in the example code in the Delete a segment of slice elements section of the "Arrays, Slices and Maps in Go" article.
- correct explainations in The Evaluation Moment of Deferred Function Values.
- the article "The Right Places to Call the Built-in
recover
Function" is renamed to "Explain Panic/Recover Mechanism in Detail". It was almost wholly re-written.
- correct the explanations for the Evaluation and Assignment Orders in Assignment Statements section in the "Expression Evaluation Orders" article.
- add two new summaries.
- I decided to withdraw the last erratum in 1.13.d. (Re-added in 1.14.d)
- add a new fact to the "type-unsafe pointers" article and pointed out a serious mistake was made in this article.
- remove the section containing a stupid code mistake from the "The Right Places to Call the recover Function" article.
- remove the inaccurate description "the address of a variable will never change"
- Go 1.13 ready.
- add two situations in the article How to Gracefully Close Channels.
- the "named type" and "unnamed type" terminologies are added back, but they are eqivalent to "defined type" and "non-defined type" now.
- enrich the Package-level Variables Initialization Order section.
- remove the "named type" and "unnamed type" terminology.
- adjust some discriptions in Type Embdding.
- add a Package-level Variables Initialization Order section.
- Go 1.12 ready.
- remove "Unused Variables" from Syntax/Semantics Exceptions In Go.
- a serious mistake was just fixed in this book. Before, the book said the starting index in a subslice syntax can't be larger than the length of the base slice. This is wrong. Please read the corrected section again for details.
- rearrange Go Details 101, more details are added.
- published Evaluation Orders.
- modify some descriptions for
- remove "Comparing Interface Values" from Syntax/Semantics Exceptions In Go.
- add "Comparisons 2" to Syntax/Semantics Exceptions In Go.
- modify some descriptions for
- add a new tip How to make a struct type incomparable?.
- add a new tip Try to reset pointers in freed-up slice elements.
- add a new tip Make optimizations by using BCE.
- remove "Precedences Of Unary Operators" from Syntax/Semantics Exceptions In Go.
- published Go Tips 101.
- mention 1.11 new
wasm
GOARCH in More Go Related Knowledges. - mention 1.11 new
go mod
command in The Go Toolchain.
- published About Go 101.
- published Acknowledgments.
- updated license.
- published Relections in Go.
- added a channel use case: rate limiting.
- added a new detail: Exit a program with a
os.Exit
function call and exit a goroutine with aruntime.Goexit
function call..
- added a new detail: Non-exported method names and struct field names from different packages are viewed as diffferent names..
- added a FAQ question: What does the compiler error message
declared and not used
mean? - added a FAQ question: What is the difference between the function call
time.Sleep(d)
and the channel receive operation<-time.After(d)
? - added a FAQ question: What is the difference between the random numbers produced by the
math/rand
standard package and thecrypto/rand
standard package? - added a FAQ question: What are the differences between the
fmt.Print
andfmt.Println
functions? - added a FAQ question: What are the differences between the built-in
print
/println
functions and the corresponding print functions in thefmt
andlog
standard packages? - added a FAQ question: Why isn't there a
math.Round
function? - added a FAQ question: What does the word gopher mean in Go community?
- finished the article some common concurrent programming mistakes.
- published Go details 101.
- unhid Go FAQ 101.
- added an interesting type embedding example
- mentioned receive-only channels can't be closed
- mentioned indexes in array and slice composite literals must be constants
First release, though some articles are still not finished.