有没有建议的方法来定义切片集合的常见行为?

有没有建议的方法来定义切片集合的常见行为?,第1张

有没有建议的方法来定义切片集合的常见行为?

这里的关键问题是您需要将切片从一种类型转换为另一种类型。

转换切片

正确的方法是创建一个新的切片并在其上循环以转换每个项目。如果您事先创建了数组,则可以更快地执行此 *** 作:

func ToIntervalsFromClockIntervals(clockIntervals []ClockInterval) HalfOpenIntervals {    intervals := make(HalfOpenIntervals, 0, len(clockIntervals))    for _, clockInterval := range clockIntervals {        intervals = append(intervals, clockInterval)    }    return intervals}
组成

除了这种组合之外,您还可以解决

GetEnclosingInterval
只编写一次函数的问题。我并不是说它更好:它还有其他优点和缺点。合适的方法取决于您在此处发布的内容之外还使用切片的方式。

这是我的重构建议(并已修正):https :
//play.golang.org/p/Ko43hJUMpyT(TehSṕhinX,您忘了使用而不是(或名称是)来创建
可变方法

baseIntervals.add``pointer recievers``value recievers``non-pointerrecievers

HalfOpenIntervals
不存在了。取而代之的是,您有两种不同的类型
CLockIntervals
PeriodIntervals
并且都具有
GetEnclosingInterval
通过通用基本结构实现的排序和功能。

为了方便起见,我为每个函数添加了

Add
一个
New...
函数。这就是缺点所在:由于
CLockIntervals
(和
PeriodIntervals
)不再是一个切片,而是一个结构,您将需要方便的功能来从外部处理内部切片。

-编辑-

过度概括

我自己来自面向对象的背景,我知道不惜一切代价避免重复代码的动力。

现在,我已经全职编写了2年多的Go代码,我了解到,这并不总是go中最好的方法。这些天来,在不同类型的go中复制代码是我常做的事情。不过,不确定是否所有人都同意这一说法。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5102693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存