sorting - 从切片中对每两个元素进行分组的最佳方法?
问题描述
假设你有一段字符串,里面有这样的字母:
a b c d e f g h
您将如何遍历列表并将每两个元素组合在一起?我试图将第一个元素保存在一个变量中,将下一个元素保存在另一个变量中。
到目前为止,这是我正在尝试的:
for i, str := range elem {
first := i
second := i + 1
if second >= len(elem) {
return
}
}
这组:
- 甲和乙
- b和c
- c和d
- d 和 e
- e 和 f
- f 和 g
但是我将如何分组
- 甲和乙
- c和d
- e 和 f
- g 和 h
(上面列表中的所有其他分组?我宁愿不必遍历该列表并彼此分组,而是在切片上进行范围并一次性组装)
解决方案
在这种情况下,for range
循环是一个糟糕的选择。更好地使用for
循环的“完整形式”
input := []string{"a", "b", "c", "d", "e", "f", "g", "h"}
result := make([]string, 0, len(input)/2)
for i := 1; i < len(input); i+=2 {
result = append(result, input[i-1]+input[i])
}
fmt.Println(result)
推荐阅读
- sql-server - 报表生成器仅显示一行
- r - 如果对象不存在,R 删除对象而不抛出错误
- android - 在 viewpager 片段中具有动态数据的动态选项卡
- swift - 是否可以在 swift 类中编写变异函数?
- django-rest-framework - 如何使用 django rest api 返回自定义响应
- ios - 来自苹果免费帐户 libswiftCore.dylib 的代码签名错误:errSecInternalComponent
- flutter - Dart 中有没有办法将函数标记为抛出异常?
- javascript - Strapi CMS:添加计算字段
- azure - Azure Application Insight 工作项授权错误
- json - Oracle APEX 中的 POST 请求(数组)