Go言語とスライス
Go言語には、配列よりも柔軟性のあるデータ構造としてスライスがあります。
スライスは、配列と同じように複数の要素を一度に管理できますが、サイズが動的で、要素の追加や削除が可能です。
この記事では、スライスの基本的な使い方を学びます。
スライスの宣言と初期化
スライスの宣言と初期化は以下のように行います。
ソースコード例
1 2 3 4 5 6 7 8 |
package main import "fmt" func main() { s := []int{1, 2, 3} // スライスの宣言と初期化 fmt.Println(s) } |
出力結果
[1 2 3]
スライスの値の取得
スライスの値の取得は、配列と同様にインデックスを使用します。
以下の例では、スライスの2番目の要素を取得しています。
ソースコード例
1 2 3 4 5 6 7 8 |
package main import "fmt" func main() { s := []int{1, 2, 3} // スライスの宣言と初期化 fmt.Println(s[1]) // スライスの値の取得 } |
出力結果
2
スライスへの値の追加
スライスへの値の追加は、組み込み関数のappend
を使用します。
以下の例では、スライスの末尾に4を追加しています。
ソースコード例
1 2 3 4 5 6 7 8 9 |
package main import "fmt" func main() { s := []int{1, 2, 3} // スライスの宣言と初期化 s = append(s, 4) // スライスへの値の追加 fmt.Println(s) } |
出力結果
[1 2 3 4]
スライスの値の修正
スライスの値の修正も、インデックスを使用します。
以下の例では、スライスの2番目の要素を7に修正しています。
ソースコード例
1 2 3 4 5 6 7 8 9 |
package main import "fmt" func main() { s := []int{1, 2, 3} // スライスの宣言と初期化 s[1] = 7 // スライスの値の修正 fmt.Println(s) } |
出力結果
[1 7 3]
スライスの値の削除
スライスから要素を削除するには、append
関数を使用します。
以下の例では、スライスの2番目の要素を削除しています。
ソースコード例
1 2 3 4 5 6 7 8 9 |
package main import "fmt" func main() { s := []int{1, 2, 3} // スライスの宣言と初期化 s = append(s[:1], s[2:]...) // スライスの値の削除 fmt.Println(s) } |
出力結果
[1 3]
スライスの要素の削除(別の方法)
スライスの要素を削除する方法は、前述したもの以外にもあります。
一つ目の方法は、append関数とスライスの特性を利用したものでしたが、もう一つはcopy関数を用いる方法です。
以下にその例を示します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 |
package main import "fmt" func main() { s := []int{1, 2, 3} // スライスの宣言と初期化 copy(s[1:], s[2:]) // 要素を一つ左にシフト s = s[:len(s)-1] // スライスのサイズを縮小 fmt.Println(s) } |
出力結果
[1 3]
スライスのコピー
スライスのコピーを作成するには、copy関数を使用します。
以下にその例を示します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 |
package main import "fmt" func main() { s1 := []int{1, 2, 3} // スライスの宣言と初期化 s2 := make([]int, len(s1)) // s1と同じ長さのスライスを作成 copy(s2, s1) // s1をs2にコピー fmt.Println(s2) } |
出力結果
[1 2 3]
for文を使用したすべての値の取得、修正方法
for文を使用すれば、スライスのすべての要素を取得したり修正したりすることができます。
以下の例では、for文を使ってスライスのすべての要素を2倍にしています。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
package main import "fmt" func main() { s := []int{1, 2, 3} // スライスの宣言と初期化 for i := range s { s[i] *= 2 // スライスのすべての要素を2倍 } fmt.Println(s) } |
出力結果
[2 4 6]
まとめ
この記事では、Go言語のスライスの基本的な使い方を学びました。
スライスは、値の取得や追加、修正、削除など、柔軟な操作が可能なデータ構造です。
また、for文を使うことで、すべての要素に対する操作も簡単に行うことができます。
これらの基本的な操作をマスターすれば、Go言語でのデータ管理が格段に楽になります。
是非、この知識を活用してみてください。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!