gpt4 book ai didi

pointers - 在 Go 中传递任意 slice

转载 作者:数据小太阳 更新时间:2023-10-29 03:32:28 24 4
gpt4 key购买 nike

我正在编写一个函数,从数据库中检索任意数据,并返回包含结果的结构片段。数据结构由用户在 ItemFactory 中定义。然后用户在工厂上实现方法,创建空结构:

func (t Example) GenerateEmptyItem() interface{} {
return &Example{}
}

我正在尝试对 Example 的 slice 执行相同的操作。我需要能够使用返回的任何内容来调用诸如 len() 之类的函数,同时保持它的通用性以允许它由“通用”函数返回。

我不能简单地拥有这样的东西,因为接口(interface) slice 的底层数据分配与示例 slice 不同:

func (t Country) GenerateEmptyItems() []interface{} {
return []Country{} //Error
}

是否可以使用指向 slice 的指针,例如 &[]Example{} 并将其作为 interface{} 传递,然后仍然能够将它用作 slice ?还是我做错了?请记住,我不知道编译时数据的类型,所以我不能简单地强制转换。

我很感激任何帮助。如果我能澄清任何事情,请告诉我。

最佳答案

您不能直接这样做。

您可以使用 reflection ,但这不是一个很好的解决方案。通常的方法是定义一个接口(interface)类型,让您以相同的方式与所有数据进行交互。一个很好的例子是 sort包。

关于pointers - 在 Go 中传递任意 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53603454/

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