Go言語の二次元スライス

Go言語

配列とスライス

Go 言語では、配列の長さを「変更不能」なものを配列 (Array)
「変更可能」なものをスライス (Slice) と呼ぶ。
Go のスライスは、Java の ArrayListVector に似た可変長の配列として振る舞う。

ファイル名をこの場合は、 slice01.go とする。

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	sc := bufio.NewScanner(os.Stdin)

	// 行数の入力読み込み
	if !sc.Scan() {
		return
	}
	row, rowErr := strconv.Atoi(sc.Text())
	if rowErr != nil {
		return
	}

	// 列数の入力読み込み
	if !sc.Scan() {
		return
	}
	column, colErr := strconv.Atoi(sc.Text())
	if colErr != nil {
		return
	}

	// 行数と列数に基づいて二次元スライスを作成
	table := make([][]int, row)
	for i := range table {
		table[i] = make([]int, column)
	}

	fmt.Println(table)
}

実行結果

ケース 1:行数 2、列数 3 の場合

username@hostname:~/src$ go run slice01.go
2
3
[[0 0 0] [0 0 0]]

ケース 2:行数 2、列数 10 の場合

username@hostname:~/src$ go run slice01.go
2
10
[[0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0]]

説明

項目説明
構造(型)[][]int
サイズrow 行 × column
初期化make で int 型のスライスを作成すると、すべての要素が自動的に 0(ゼロ値)に初期化される。
アクセスtable[行][列]

参考教材

A Tour of Go https://go.dev/tour/welcome/1

コメント

タイトルとURLをコピーしました