This is a creation in Article, where the information may have evolved or changed.
When reading Server.go, it was accidentally found that such two-sentence assignment is a grammar that is not allowed in other languages. As follows:
1915isdefaultby Serve.1916var DefaultServeMux = &defaultServeMux19171918var
It is not difficult to find the Defaultservemux statement under the Defaultservemux, that defaultservemux in the absence of a statement, how can the reference be assigned to Defaultservemux it?
In the go language, the assignment of a variable, the invocation of a function, the invocation of a method, the operation of a communication are evaluated from left to right in the syntax, and in the evaluation, the evaluation statement is parsed sequentially until all the expressions are found to be fully assigned.
Language is a bit verbose, take the above two sentences to analyze:
The first analysis of the variable defaultservemux, found that it refers to the variable Defaultservemux, and this variable is uninitialized, so the second step will first analyze the variable Defaultservemux, oh, The original Defaultservemux is a Servemux variable. And then go back to the first sentence so that the Defaultservemux reference is assigned to Defaultservemux
For more information:
Go Learning Notes-variable declaration
Go official explanation: Order of Evaluation