关于多个结构体如何定义变量

1. 运行环境

  • Go版本:go1.16.4

2. 问题描述?

我如果有三个结构体

type football struct {
...
}
type basketball struct {
...
}
type pingpong struct {
...
}

我想通过一个switch 根据一个变量来决定调用哪个结构体

...
//错误代码 我希望通过switch后能获取一个可用的sportStruct变量
switch sports {
    case "football":
    sportStruct = football{...}
    case "basketball":
    sportStruct = basketball{...}
    case "pingpong":
    sportStruct = pingpong{...}
    default:
    sportStruct = XXX{...}
}
...

3. 您期望得到的结果?

希望sportStruct变量可用

4. 您实际得到的结果?

尝试在switch外层定义 但不知道sportStruct 应该定义成什么类型
尝试通过:=每个分支上都写上sportStruct变量 但还是提示未定义

嘉宝君
最佳答案

强类型语言不支持这样定义吧,看楼上说的空接口可以实现,可以考虑通过策略模式解决

2周前 评论
讨论数量: 6

我语文不太好,能说的清楚点不?

2周前 评论
嘉宝君

:joy: 空接口可以解决了 但不知道是不是很恰当的方法 有其他方法的朋友也可以集思广益 刚刚开始学 不太熟悉

2周前 评论
滚球兽进化 2周前

强类型语言不支持这样定义吧,看楼上说的空接口可以实现,可以考虑通过策略模式解决

2周前 评论
╰ゝSakura

定义interface就解决了啊

2周前 评论

sportStruct := interface {}

2周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!