Go:多次元スライスの作成

ここでは、Go で多次元スライス(multidiminsional slice in Golang)を作成する方法とスライスを関数に渡す方法について紹介します。

slice.go

package main
import "fmt"

func main() {
  const N1 = 10
  const N2 = 20
  const N3 = 30

  /* 1次元スライス(0で初期化)*/
  slice1d := make([]float64, N1)

  /* 2次元スライス(0で初期化)*/
  slice2d := make([][]float64, N1)
  for i := range slice2d {
    slice2d[i] = make([]float64, N2)
  }

  /* 3次元スライス(0で初期化)*/
  slice3d := make([][][]float64, N1)
  for i := range slice3d {
    slice3d[i] = make([][]float64, N2)
    for j := range slice3d[i] {
      slice3d[i][j] = make([]float64, N3)
    }
  }

  fmt.Printf("%f\n", slice1d[0])
  fmt.Printf("%f\n", slice2d[0][0])
  fmt.Printf("%f\n", slice3d[0][0][0])

  setValues(slice1d, slice2d, slice3d)

  fmt.Printf("%f\n", slice1d[0])
  fmt.Printf("%f\n", slice2d[0][0])
  fmt.Printf("%f\n", slice3d[0][0][0])
}

func setValues(slice1d []float64, slice2d [][]float64, slice3d [][][]float64) {
  slice1d[0] = 1
  slice2d[0][0] = 2
  slice3d[0][0][0] = 3
}
 

 


go build slice.go


参考サイト