Sorting 将一个切片中的每两个元素分组的最佳方法?

Sorting 将一个切片中的每两个元素分组的最佳方法?,sorting,go,Sorting,Go,假设有一段字符串,里面有这样的字母: a b c d e f g h 如何迭代列表并将每两个元素分组在一起?我试图将第一个元素保存在一个变量中,将下一个元素保存在另一个变量中 这就是我目前正在尝试的: 对于i,str:=范围元素{ 第一:=i 第二:=i+1 如果秒>=len(elem){ 返回 } } 这些群体: a和b b和c c和d d和e e和f f和g 但我该如何分组呢 a和b c和d e和f g和h (以上列表中的每一个分组?我宁愿不必在该列表中循环,而是在切片上每隔一个范

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

a b c d e f g h

如何迭代列表并将每两个元素分组在一起?我试图将第一个元素保存在一个变量中,将下一个元素保存在另一个变量中

这就是我目前正在尝试的:

对于i,str:=范围元素{
第一:=i
第二:=i+1
如果秒>=len(elem){
返回
}
}
这些群体:

  • a和b
  • b和c
  • c和d
  • d和e
  • e和f
  • f和g
但我该如何分组呢

  • a和b
  • c和d
  • e和f
  • g和h

(以上列表中的每一个分组?我宁愿不必在该列表中循环,而是在切片上每隔一个范围分组,然后一次性组装)

在这种情况下,对于范围
循环是一个错误的选择。最好将
的“完整形式”用于
循环

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)
input:=[]字符串{“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”}
结果:=make([]字符串,0,len(输入)/2)
对于i:=1;i

在这种情况下,
for range
循环是一个错误的选择。最好将
的“完整形式”用于
循环

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)
input:=[]字符串{“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”}
结果:=make([]字符串,0,len(输入)/2)
对于i:=1;i

对你来说“分组”到底意味着什么?一个频道还是另一个片段?输出?在任何情况下,只需两步迭代或跳过每一次迭代。@UlrichEckhardt我希望返回一个具有所需值的变量,而不需要另一个切片或通道。下面的用户确实将结果作为一个片段返回,但是每次返回一个组会更好当您返回时,函数(包括当前正在运行的循环)完成。您只能获取第一个和第二个元素,而不能获取多个组。我也不明白“排序”是怎么起作用的。@UlrichEckhardt是的,这是对的,只是想要一个包含组的变量,而不是在退出循环的return语句中。这实际上是一个分组而不是排序的问题。我只是修改了下面的解决方案,将
input[I-1]
input[I]
分别存储在各自的变量中,这就是我正在寻找的行为“分组”对您来说到底意味着什么?一个频道还是另一个片段?输出?在任何情况下,只需两步迭代或跳过每一次迭代。@UlrichEckhardt我希望返回一个具有所需值的变量,而不需要另一个切片或通道。下面的用户确实将结果作为一个片段返回,但是每次返回一个组会更好当您返回时,函数(包括当前正在运行的循环)完成。您只能获取第一个和第二个元素,而不能获取多个组。我也不明白“排序”是怎么起作用的。@UlrichEckhardt是的,这是对的,只是想要一个包含组的变量,而不是在退出循环的return语句中。这实际上是一个分组而不是排序的问题。我只是修改了下面的解决方案,将
input[I-1]
input[I]
存储在各自的变量中,这就是我要寻找的行为