登录
首页 >  Golang >  Go问答

在 Go 中传递任意切片

来源:stackoverflow

时间:2024-04-08 19:15:35 340浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《在 Go 中传递任意切片》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

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

func (t example) generateemptyitem() interface{} {
    return &example{}
}

我正在尝试对 example 切片执行相同的操作。我需要能够使用返回的任何内容,调用 len() 等函数,同时保持其通用性,以便允许它由“通用”函数返回。

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

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

是否可以使用指向切片的指针,例如 &[]example{} 并将其作为 interface{} 传递,然后仍然可以将其用作切片?或者我会犯这个错误吗?请记住,我在编译时不知道数据的类型,所以我不能简单地进行转换。

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


解决方案


你不能直接做到这一点。

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

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>