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
参考サイト
- Create and Print Multi Dimensional Slice in Golang
- What is a concise way to create a 2D slice in Go?
- スライスのポインタについて