はじめに
この記事はGo4 Advent Calendar 2018 14日目です。
最近Goをさわりはじめて、AtCoderでGoを使って100問ほど解いてきました。問題を解く中で、使う機会があったSliceの扱いについてまとめました。急いで書いたのもあってやや内容が少なめですが、時間を見つけて随時更新していこうと思います。
append
Sliceの末尾に要素を追加します。
s := []string{"A", "B"}
fmt.Println(s) //[A B]
s = append(s, "C")
fmt.Println(s) // [A B C]
s = append(s, "D", "E")
fmt.Println(s) // [A B C D E]
s = append(s, s...)
fmt.Println(s) // [A B C D E A B C D E]
pop
Sliceの先頭要素の取り出し
s := []string{"A", "B", "C", "D", "E"}
fmt.Println(s) // [A B C D E]
h := s[0]
s = s[1:]
fmt.Println(h) // A
fmt.Println(s) // [B C D E]
h = s[0]
s = s[1:]
fmt.Println(h) // B
fmt.Println(s) // [C D E]
Sliceの末尾要素の取り出し
s := []string{"A", "B", "C", "D", "E"}
fmt.Println(s) // [A B C D E]
h := s[len(s)-1]
s = s[:len(s)-1]
fmt.Println(h) // E
fmt.Println(s) // [A B C D]
h = s[len(s)-1]
s = s[:len(s)-1]
fmt.Println(h) // D
fmt.Println(s) // [A B C]
remove
indexを指定して削除
s := []string{"A", "B", "C", "D", "E"}
fmt.Println(s) // [A B C D E]
index := 1
s = append(s[:index], s[index+1:]...)
fmt.Println(s) // [A C D E]
s = append(s[:index], s[index+1:]...)
fmt.Println(s) // [A D E]
insert
indexを指定して挿入
s := []string{"A", "B", "C", "D", "E"}
fmt.Println(s) // [A B C D E]
index := 2
s = append(s, "")
copy(s[index+1:], s[index:])
s[index] = "G"
fmt.Println(s) // [A B G C D E]