茶漬けの技術メモ

Golang, Rubyで趣味開発します。テックニュース書いたり。ガジェット触ったり。

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]]


おまけ

こちらもどうぞ

o-tyazuke.hatenablog.com


このブログのTwitterアカウントを作成しました!!
フォロー待ってます!!
twitter.com