Golang - 结构上缺少表达式错误
Golang - Missing expression error on structs
type Old struct {
UserID int `json:"user_ID"`
Data struct {
Address string `json:"address"`
} `json:"old_data"`
}
type New struct {
UserID int `json:"userId"`
Data struct {
Address string `json:"address"`
} `json:"new_data"`
}
func (old Old) ToNew() New {
return New{
UserID: old.UserID,
Data: { // from here it says missing expression
Address: old.Data.Address,
},
}
}
什么是 “缺少表达式” 使用结构时的错误?
我正在将旧对象转换为新对象。我将它们缩小只是为了直截了当,但转换要复杂得多。例如,UserID 字段效果很好。但是当我使用 struct(它最终打算成为一个 JSON 对象)时,Goland IDE 尖叫 "missing expression" 并且编译器说"missing type在这一行上的复合文字”。我做错了什么?也许我应该使用其他东西而不是结构?请帮忙。
您将 Data
定义为内联结构。给它赋值的时候,必须先放入内联声明:
func (old Old) ToNew() New {
return New{
UserID: old.UserID,
Data: struct {
Address string `json:"address"`
}{
Address: old.Data.Address,
},
}
}
因此通常最好为 Data
定义一个单独的类型,就像 User
.
Data
是一个anonymous struct,所以需要这样写:
type New struct {
UserID int `json:"userId"`
Data struct {
Address string `json:"address"`
} `json:"new_data"`
}
func (old Old) ToNew() New {
return New{
UserID: old.UserID,
Data: struct {
Address string `json:"address"`
}{
Address: old.Data.Address,
},
}
}
我认为创建一个命名的 Address
结构是最干净的。
type Old struct {
UserID int `json:"user_ID"`
Data struct {
Address string `json:"address"`
} `json:"old_data"`
}
type New struct {
UserID int `json:"userId"`
Data struct {
Address string `json:"address"`
} `json:"new_data"`
}
func (old Old) ToNew() New {
return New{
UserID: old.UserID,
Data: { // from here it says missing expression
Address: old.Data.Address,
},
}
}
什么是 “缺少表达式” 使用结构时的错误? 我正在将旧对象转换为新对象。我将它们缩小只是为了直截了当,但转换要复杂得多。例如,UserID 字段效果很好。但是当我使用 struct(它最终打算成为一个 JSON 对象)时,Goland IDE 尖叫 "missing expression" 并且编译器说"missing type在这一行上的复合文字”。我做错了什么?也许我应该使用其他东西而不是结构?请帮忙。
您将 Data
定义为内联结构。给它赋值的时候,必须先放入内联声明:
func (old Old) ToNew() New {
return New{
UserID: old.UserID,
Data: struct {
Address string `json:"address"`
}{
Address: old.Data.Address,
},
}
}
因此通常最好为 Data
定义一个单独的类型,就像 User
.
Data
是一个anonymous struct,所以需要这样写:
type New struct {
UserID int `json:"userId"`
Data struct {
Address string `json:"address"`
} `json:"new_data"`
}
func (old Old) ToNew() New {
return New{
UserID: old.UserID,
Data: struct {
Address string `json:"address"`
}{
Address: old.Data.Address,
},
}
}
我认为创建一个命名的 Address
结构是最干净的。