首页 > 解决方案 > 从切片中对每两个元素进行分组的最佳方法?

问题描述

假设你有一段字符串,里面有这样的字母:

a b c d e f g h

您将如何遍历列表并将每两个元素组合在一起?我试图将第一个元素保存在一个变量中,将下一个元素保存在另一个变量中。

到目前为止,这是我正在尝试的:

for i, str := range elem {
    first := i
    second := i + 1
    if second >= len(elem) {
        return
    }
}

这组:

但是我将如何分组

(上面列表中的所有其他分组?我宁愿不必遍历该列表并彼此分组,而是在切片上进行范围并一次性组装)

标签: sortinggo

解决方案


在这种情况下,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)

https://play.golang.org/p/0o53xr2tQlc


推荐阅读