该类型别名语法是否为Go?

时间:2019-03-29 14:04:56

标签: go

我在../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)与类型别名有关吗?

1 个答案:

答案 0 :(得分:5)

您引用的行仅是ServeMux类型的变量的声明,它是赋值定义的替代的显式变体。例如,这两个语句是等效的:

var foo ServeMux = ServeMux{}
foo := ServeMux{}

在两种情况下,foo的类型均为ServeMux

您可以阅读有关变量声明语法here的信息。 在全局变量范围内,不允许使用:=的简写,这就是使用var语法定义全局变量的原因(在您的示例中就是这种情况)。

类型“别名”,即基于现有类型的新类型的声明具有different syntax,与此无关。