我在../go/src/net/http/server.go
中没有得到以下语法:
var defaultServeMux ServeMux
其中
ServeMux
是一个结构
type ServeMux struct {
mu sync.RWMutex
m map[string]muxEntry
es []muxEntry
hosts bool
}
在GO中,键入别名看起来像type T1 = T2
。
上面的语法(用于defaultServeMux
)与类型别名有关吗?
答案 0 :(得分:5)
您引用的行仅是ServeMux
类型的变量的声明,它是赋值定义的替代的显式变体。例如,这两个语句是等效的:
var foo ServeMux = ServeMux{}
foo := ServeMux{}
在两种情况下,foo
的类型均为ServeMux
。
您可以阅读有关变量声明语法here的信息。
在全局变量范围内,不允许使用:=
的简写,这就是使用var
语法定义全局变量的原因(在您的示例中就是这种情况)。
类型“别名”,即基于现有类型的新类型的声明具有different syntax,与此无关。