首页 > 解决方案 > 结构声明样式之间的语法/语义差异

问题描述

这两个声明有什么区别吗?

type Foo = struct {
    F string `zoom:"1"`
}

type Foo struct {
    F string `zoom:"1"`
}

他们都编译并且似乎工作相同。

标签: go

解决方案


第二个,它是一个结构声明的例子。

type Foo struct {
    F string `zoom:"1"`
}

第一个是 go1.9 新特性的使用示例:type aliases

创建了一个新类型Foo。它是匿名结构的别名。

type Foo = struct {
    F string `zoom:"1"`
}

类型别名语法可用于定义结构。在上面的示例中,它生成了一个等价的结果,例如type Foo struct.

但是,类型别名的最初目的是从定义的类型中创建一个别名。

在下面的示例中,创建了一个名为的新类型,它是structBar的别名。Foo

type Foo struct {
    F string `zoom:"1"`
}
type Bar = Foo

推荐阅读