将结构体作为参数传递给函数,并返回相应结构体的切片

时间:2019-01-23 13:30:42

标签: xml function go struct slice

我正在尝试编写一个可由不同结构使用的函数。 函数的返回必须是相应结构的一部分。 因此,我需要一个接受结构作为参数并返回切片的函数。 我的代码看起来像这样,但是我不知道如何将其包装为函数?

type name struct{
   FirstName string `xml:"firstName"`
   LastName string `xml:"lastName"`
  }

fileList := TreeTraversal(".")
    var a name
    var b []name 


for i := 0; i < len(fileList); i++{
    fileByte, _ := ioutil.ReadFile(fileList[i])

    xml.Unmarshal(fileByte, &a)
    b = append(b, a)
}

据我所知,我可以将结构体作为接口传递给函数,但是我不知道返回类型吗?

1 个答案:

答案 0 :(得分:1)

如果您想要一个采用任何结构类型并返回其一部分的函数,例如:

func MakeSlice(s ANY_STRUCT_TYPE) []ANY_STRUCT_TYPE

您正在寻找Go目前不支持的泛型。参见this FAQ entry

Go小组正在努力add generics to the language-这项工作仍在进行中,每个人都可以自由参加讨论。泛型一旦存在,它们将提供您在此处寻求的解决方案。


同时,您可以使用code generation或为您的问题考虑一个略有不同的设计。某些代码复制也是可以的,Go并不像其他语言那么糟糕。