关于DefaultServeMux源码这一块没看懂,请高手解释一下

juneybw
  • 2
新手上路,请多包涵
func NewServeMux() *ServeMux { return new(ServeMux) }
// DefaultServeMux is the default ServeMux used by Serve.
var DefaultServeMux = &defaultServeMux
var defaultServeMux ServeMux

这一块中defaultServeMux变量声明后没有初始化吧?DefaultServeMux获得的是?在网上看别人分析的源码经常看到var DefaultServeMux = NewServeMux(),但是我在
https://sourcegraph.com/github.com/golan...
看到的是我贴出来的这段代码,并没有调用NewServe(),这里实在是不明白。
看了下历史版本这个写法是1.6 master 分支看到的。

回复
阅读 2.6k
2 个回答
douglarek
  • 448
var defaultServeMux ServeMux

这个既是声明也是初始化,defaultServeMux 默认值是 ServeMux 的 零值(zero value);

yangyongwff
  • 2
新手上路,请多包涵

var defaultServeMux ServeMux
不同于Java语言,go中直接使用var声明的变量即可完成初始化,并且默认初始化为空值.

宣传栏