Goでスライスを2個ずつのスライスに分割する
Ruby であれば each_slice(2)
とすれば、arrayを2個ずつに分割できるのですが
Go にはそんなメソッド無いので実装してみた
実装内容
サンプルコード
package main import ( "fmt" ) func main() { raw := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} twice := [][]int{} sliceSize := len(raw) for i := 0; i < sliceSize; i += 2 { end := i + 2 if sliceSize < end{ end = sliceSize } twice = append(twice, raw[i:end]) } fmt.Print(twice) }
実行結果
[[1 2] [3 4] [5 6] [7 8] [9 10]]
3つずつの場合
サンプルコード
package main import ( "fmt" ) func main() { raw := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} thrice := [][]int{} sliceSize := len(raw) for i := 0; i < sliceSize; i += 3 { end := i + 3 if sliceSize < end{ end = sliceSize } thrice = append(thrice, raw[i:end]) } fmt.Print(thrice) }
実行結果
[[1 2 3] [4 5 6] [7 8 9] [10]]
おまけ
こちらもどうぞ
このブログのTwitterアカウントを作成しました!!
フォロー待ってます!!
twitter.com