我正在尝试编写一个可由不同结构使用的函数。 函数的返回必须是相应结构的一部分。 因此,我需要一个接受结构作为参数并返回切片的函数。 我的代码看起来像这样,但是我不知道如何将其包装为函数?
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)
}
据我所知,我可以将结构体作为接口传递给函数,但是我不知道返回类型吗?
答案 0 :(得分:1)
如果您想要一个采用任何结构类型并返回其一部分的函数,例如:
func MakeSlice(s ANY_STRUCT_TYPE) []ANY_STRUCT_TYPE
您正在寻找Go目前不支持的泛型。参见this FAQ entry。
Go小组正在努力add generics to the language-这项工作仍在进行中,每个人都可以自由参加讨论。泛型一旦存在,它们将提供您在此处寻求的解决方案。
同时,您可以使用code generation或为您的问题考虑一个略有不同的设计。某些代码复制也是可以的,Go并不像其他语言那么糟糕。