gpt4 book ai didi

go - 动态函数返回类型

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

我有一个按模块分开的应用程序。有几个实体和 CSV 模块。 Csv 模块仅支持结构(实体),但我想让 CSV 模块适用于任何类型的实体。现在它是这样工作的:Csv 模块从 channel 接收数据并将其严格转换为 EverySize 结构。我怎样才能实现动态返回类型,以便它适用于任何类型的实体,而不仅仅是 Everysize

    func prepareWrapData(data []feed.WrapExporterChannels) []everysize.EverySizeItem {
var result []everysize.EverySizeItem
for _, value := range data {
result = append(result, *value.EverySizeItem)
}
return result
}

最佳答案

Quick/Dirty 解决方案:返回接口(interface){},但最终你欺骗了编译器,而类型检查的痛苦由你承担。

更好/更安全的解决方案:考虑您需要对返回的类型执行的常见操作,为每种类型定义这些通用方法,并将这些通用方法保存在一个接口(interface)中。如果您试图从一个函数返回多个类型,很可能它们之间一定已经存在一些共同的关系,或者可以通过很少的重组找到。从函数返回该接口(interface)。这样,编译器将始终能够检查您是否没有返回意外的东西(没有实现这些方法的东西)。您可能想查看 工厂方法 模式是如何在 Golang 中实现的。 (提示:它返回接口(interface),而不是像通常在 C++/Java 中那样返回父类(super class))

关于go - 动态函数返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52514540/

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