什么时候使用未命名类型?
When to use unnamed type?
阅读
我们使用命名结构类型,比如说,
type Foo struct{
name string
email string
}
var y Foo
解码在线数据或引入一种新类型来保存一组值和对这些值的操作
什么时候使用未命名类型?
var x struct{
name string
email string
}
初始化变量标识符的语法是什么x
?
作为一条快速规则,如果您发现自己再次 copying/typing 结构定义之外,您不妨将其设为命名类型。毕竟,这就是名字的全部意义所在;它们是多次引用同一事物的快捷方式。为避免命名混乱,请尽量在尽可能窄的范围内声明类型(例如,在使用它的函数范围内)。
初始化语法如下:
var x struct{
name string
email string
} = struct {
name string
email string
}{
name: "name",
email: "email",
}
可以缩短为
var x = struct {
name string
email string
}{
name: "name",
email: "email",
}
因为可以推断类型。
使用未命名类型的最佳时机是当您不必再次显式引用该类型时。由于该类型没有名称,要明确引用它,您(通常)必须再次复制整个类型规范。例如,在分配新值时。
// reassign x
x = struct {
name string
email string
}{
name: "name2",
email: "email2",
}
这很快就会变得很丑陋,尤其是对于较大的结构,重复的代码在需要更新时会产生重复的工作。
您可以尝试将其缩短如下:
// reassign x
x.name = "name2"
x.email = "email2"
这应该被认为是错误的形式,但是,因为不清楚 if/that 意图是重新分配“x”的整个值还是只是改变一些 select 字段。如果更新结构以添加更多字段,则此代码可能会在没有警告的情况下变得不正确。
阅读
我们使用命名结构类型,比如说,
type Foo struct{
name string
email string
}
var y Foo
解码在线数据或引入一种新类型来保存一组值和对这些值的操作
什么时候使用未命名类型?
var x struct{ name string email string }
初始化变量标识符的语法是什么
x
?
作为一条快速规则,如果您发现自己再次 copying/typing 结构定义之外,您不妨将其设为命名类型。毕竟,这就是名字的全部意义所在;它们是多次引用同一事物的快捷方式。为避免命名混乱,请尽量在尽可能窄的范围内声明类型(例如,在使用它的函数范围内)。
初始化语法如下:
var x struct{
name string
email string
} = struct {
name string
email string
}{
name: "name",
email: "email",
}
可以缩短为
var x = struct {
name string
email string
}{
name: "name",
email: "email",
}
因为可以推断类型。
使用未命名类型的最佳时机是当您不必再次显式引用该类型时。由于该类型没有名称,要明确引用它,您(通常)必须再次复制整个类型规范。例如,在分配新值时。
// reassign x
x = struct {
name string
email string
}{
name: "name2",
email: "email2",
}
这很快就会变得很丑陋,尤其是对于较大的结构,重复的代码在需要更新时会产生重复的工作。
您可以尝试将其缩短如下:
// reassign x
x.name = "name2"
x.email = "email2"
这应该被认为是错误的形式,但是,因为不清楚 if/that 意图是重新分配“x”的整个值还是只是改变一些 select 字段。如果更新结构以添加更多字段,则此代码可能会在没有警告的情况下变得不正确。