go - 我可以从方法返回匿名结构吗?
问题描述
假设我有一个结构,例如:
type Tmp struct {
Number int
Text string
}
是否有可能有一个返回匿名结构的方法?就像是:
func (t Tmp) MyStruct() struct {
return struct {
myVal string
}{
"this is my val"
}
}
我尝试了上面的代码,但出现错误。这有可能实现任何其他方式吗?
解决方案
是的,这是可能的,但是您的函数签名在语法上不正确。struct
是关键字,而不是类型。
它是这样有效的:
func (t Tmp) MyStruct() struct {
myVal string
} {
return struct {
myVal string
}{
"this is my val",
}
}
测试它:
var t Tmp
fmt.Printf("%+v", t.MyStruct())
输出将是(在Go Playground上尝试):
{myVal:this is my val}
如您所见,这不是很方便,因为您必须在返回值时重复复合文字中的结构定义。为避免这种情况,您可以使用命名结果:
func (t Tmp) MyStruct() (result struct {
myVal string
}) {
result.myVal = "this is my val"
return
}
这输出相同。在Go Playground上试试这个。
但最简单的是定义一个你想要返回的类型,一切都会很简单:
type MS struct {
myVal string
}
func (t Tmp) MyStruct() MS {
return MS{myVal: "this is my val"}
}
在Go Playground上试试这个。
推荐阅读
- wpf - 如何从 WPF 中的 Version.Build 和 Version.Revision 获取当前年份?
- javascript - 在 cookie 中使用 javascript 临时保留更改
- c++ - 如何增加集合中的元素?
- python - 无限方井的四阶龙格-库塔
- python - 在张量流输入管道期间跳过图像
- sql - 如何使用正则表达式从电子邮件中排除某个域而无需负前瞻?
- android - 为本地构建配置 Android Studio
- c++ - Eclipse 正在构建项目没有错误,但报告未解决的包含
- karate - 有没有办法从场景大纲示例中添加一个嵌套的 json 值并让它正确格式化 JSON
- java - Springboot 1.5.10:启用 Actuator Health URL 无需证书认证