当前位置: > > > > 如何将任何结构作为参数发送给方法并返回该结构?
如何将任何结构作为参数发送给方法并返回该结构?
来源:stackoverflow
2024-04-19 16:12:32
0浏览
收藏
怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面米云就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《如何将任何结构作为参数发送给方法并返回该结构?》,涉及到,有需要的可以收藏一下
问题内容
我是 go 新手,我想看看是否有一种方法可以接收任何结构作为参数。
我的代码中有类似这样的函数,它对 5 个结构执行完全相同的操作并返回相同的结构,但我不知道是否可以做到这一点。我想知道我是否可以做这样的事情:
type car struct {
model string `yaml:"model"`
color string `yaml:"color"`
wheels int `yaml:wheels"`
windows int `yaml:"windows"`
}
type motorcycle struct {
model string `yaml:"model"`
color string `yaml:"color"`
wheels int `yaml:wheels"`
}
type bus struct {
model string `yaml:"model"`
color string `yaml:"color"`
wheels int `yaml:wheels"`
passengers int `yaml:"passengers"`
}
func main () {
car := getyamldata(car)
motorcycle := getyamldata(motorcycle)
bus := getyamldata(bus)
}
func getyamldata(struct anystructure) (returnanystruct struct){
yaml.unmarshal(yamlfile, &anystructure)
return anystructure
}
是否可以执行类似上面代码的操作?其实我有的是这样的:
func main(){
car, _, _ := GetYamlData("car")
_,motorcycle,_ := GetYamlData("motorcycle")
_,_,bus := GetYamlData("bus")
}
func GetYamlData(structureType string) (car *Car, motorcycle *Motorcycle, bus *Bus){
switch structureType{
case "car":
yaml.Unmarshal(Filepath, car)
case "motorcycle":
yaml.Unmarshal(Filepath, motorcycle)
case "bus":
yaml.Unmarshal(Filepath, bus)
}
return car, motorcycle, bus
}
随着时间的推移,这会增加,它将返回很多值,而我不想要很多返回值,有没有办法用我发布的第一个代码来做到这一点?
解决方案
您可以采用与 yaml.unmarshal 完全相同的方式来完成此操作,即采用要解组的值:
func getyamldata(i interface{}) {
yaml.unmarshal(filepath, i)
}
使用示例:
func main () {
var car Car
var motorcycle Motorcycle
var bus Bus
GetYamlData(&car)
GetYamlData(&motorcycle)
GetYamlData(&bus)
}
今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注米云公众号,一起学习编程~
