59 lines
882 B
Go
59 lines
882 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
func accessToElement1() {
|
|
data := make([]int, 3)
|
|
fmt.Println(data[4]) // panic
|
|
}
|
|
|
|
func accessToElement2() {
|
|
data := make([]int, 3, 6)
|
|
fmt.Println(data[4]) // panic
|
|
}
|
|
|
|
func accessToElement3() {
|
|
data := make([]int, 3, 6)
|
|
_ = data[-1] // compilation error
|
|
}
|
|
|
|
func accessToNilSlice1() {
|
|
var data []int
|
|
_ = data[0] // panic
|
|
}
|
|
|
|
func accessToNilSlice2() {
|
|
var data []int
|
|
data[0] = 10 // panic
|
|
}
|
|
|
|
func appendToNilSlice() {
|
|
var data []int
|
|
data = append(data, 10)
|
|
}
|
|
|
|
func rangeByNilSlice() {
|
|
var data []int
|
|
for range data {
|
|
}
|
|
}
|
|
|
|
func makeZeroSlice() {
|
|
data := make([]int, 0)
|
|
fmt.Println(len(data)) // 0
|
|
fmt.Println(cap(data)) // 0
|
|
}
|
|
|
|
func makeSlice() {
|
|
_ = make([]int, -5) // compilation error
|
|
_ = make([]int, 10, 5) // compilation error
|
|
|
|
size := -5
|
|
_ = make([]int, size) // panic
|
|
|
|
size = 5
|
|
_ = make([]int, size*2, size) // panic
|
|
}
|