配列とスライス
Go 言語では、配列の長さを「変更不能」なものを配列 (Array)、
「変更可能」なものをスライス (Slice) と呼ぶ。
Go のスライスは、Java の ArrayList や Vector に似た可変長の配列として振る舞う。
ファイル名をこの場合は、 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

コメント