栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

转换切片

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

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中复制代码是我常做的事情。不过,不确定是否所有人都同意这一说法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430609.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号