golang net/http/server.go中声明前的赋值

golang net/http/server.go中声明前的赋值,go,Go,我打算在golang net/http/server.go中编写代码,并在 在这里,我们看到defaultServerMux指针是在下一行声明之前分配的。我没有尝试自己构建它,但它是从发布提交开始的。它是如何工作的?语言规范将变量初始化解释为: …如果包级别变量尚未初始化且没有初始化表达式或其初始化表达式不依赖于未初始化的变量,则认为它已准备好进行初始化。初始化过程是重复初始化下一个包级别的变量,该变量在声明顺序中最早并准备好进行初始化,直到没有变量准备好进行初始化 因此,首先初始化所有没有依

我打算在golang net/http/server.go中编写代码,并在


在这里,我们看到defaultServerMux指针是在下一行声明之前分配的。我没有尝试自己构建它,但它是从发布提交开始的。它是如何工作的?

语言规范将变量初始化解释为:

…如果包级别变量尚未初始化且没有初始化表达式或其初始化表达式不依赖于未初始化的变量,则认为它已准备好进行初始化。初始化过程是重复初始化下一个包级别的变量,该变量在声明顺序中最早并准备好进行初始化,直到没有变量准备好进行初始化

因此,首先初始化所有没有依赖关系的变量,然后初始化依赖于已初始化变量的变量,依此类推

// DefaultServeMux is the default ServeMux used by Serve.
var DefaultServeMux = &defaultServeMux

var defaultServeMux ServeMux