完全スライス式(フルスライス式)
比較的 Go は触るほうだが、これを書くまで知らなかった。 というか使わなさすぎて忘れていた。
slice[low:high:max] のように記述し、容量が max - min であること以外は、slice[low:high] と同じ。
たとえば下記のコードだと、main と f のスライスは同じ基底配列を参照しているので、f による変更が main にも影響する。
code:go
func main() {
s := []int{1, 2, 3}
}
func f(s []int) {
_ = append(s, 100)
}
これを完全スライス式を用いることで回避できる。
code:go
func main() {
s := []int{1, 2, 3}
}
func f(s []int) {
_ = append(s, 100)
}