gpt4 book ai didi

go - 动态数组结构作为参数

转载 作者:行者123 更新时间:2023-12-01 20:26:25 25 4
gpt4 key购买 nike

如何在golang中将动态数组结构作为参数传递

例如

type Dog {
Name string
}

type Cat {
Name uint
}

我想要一个函数,它将 cat 或 dog 的数组作为参数并循环遍历函数中的数组。以下是我想要实现的功能
func (array of either cats or dogs ){

for _ , item := range (array of either cats or dogs) {

}
}

最佳答案

我假设你的意思是

type Dog struct{
Name string
}

type Cat struct{
Name uint
}

你的函数应该接受 interface{}作为参数,因此您可以随意发送 DogCat或任何你想要的论点。但是接受数据后需要申请 Type assertion在函数内部提取特定数据类型以便循环它,因为你不能循环接口(interface)。
x := args.(type) // x will contain the name of the data type store inside the interface{}

或者你可以使用
x := i.(Dog) //if you're absolutely sure that the data type is Dog

x, ok := i.(Cat) //If you're not sure and want to avoid runtime panic

请阅读 Go Tour 示例以了解有关类型断言的更多信息。

编辑:
在评论 @mkopriva建议 func F(slice ...interface{}) , 所以你需要转换 Dog 的 slice 或 Cat slice interface{}使该函数签名起作用。您将不得不手动添加/附加 Cat 中的每个元素或 Dog slice 为 interface{}Cat 的 slice 转换的 slice 或 Dog slice interface{}片。

关于go - 动态数组结构作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61987581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com