53 lines
735 B
Go
53 lines
735 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"slices"
|
|
)
|
|
|
|
func sliceToEnd() {
|
|
data := make([]int, 4, 6)
|
|
|
|
slice := data[2:]
|
|
fmt.Println(len(slice)) // 2
|
|
fmt.Println(cap(slice)) // 4
|
|
}
|
|
|
|
func sliceMoreThanSize() {
|
|
data := make([]int, 2, 6)
|
|
|
|
slice1 := data[1:6]
|
|
_ = slice1
|
|
}
|
|
|
|
func sliceWithIncorrectIndeces() {
|
|
data := make([]int, 2, 6)
|
|
|
|
slice2 := data[1:7] // panic
|
|
_ = slice2
|
|
|
|
slice3 := data[2:1] // compilation error
|
|
_ = slice3
|
|
|
|
left := 2
|
|
right := 1
|
|
slice4 := data[left:right] // panic
|
|
_ = slice4
|
|
}
|
|
|
|
func sliceWithNilSlice() {
|
|
var data []int
|
|
|
|
slice := data[:]
|
|
slice = data[0:0]
|
|
slice = data[0:1] // panic
|
|
_ = slice
|
|
}
|
|
|
|
func increaseCapacity() {
|
|
data := make([]int, 0, 10)
|
|
data = data[:10:100] // panic
|
|
|
|
slices.Grow(data, 100)
|
|
}
|