package main
import "fmt"
func main() {
a := []int{1, 2, 3}
slice(a)
fmt.Println("1", a) //10 2 3
slicePtr1(&a)
fmt.Println("2", a) //20 20 3 20
slicePtr2(&a)
fmt.Println("3", a) //30 30 3 20
slicePtr3(&a)
}
func slice(s []int) {
s[0] = 10
s = append(s, 10)
s[1] = 10
fmt.Println(s) //10 10 3 10
}
func slicePtr1(s *[]int) {
(*s)[0] = 20
*s = append(*s, 20)
(*s)[1] = 20
}
func slicePtr2(s *[]int) {
b := *s
b[0] = 30
b = append(b, 30)
b[1] = 30
}
func slicePtr3(s *[]int) {
b := *s
b = append(b, 40)
fmt.Println("4", b) //30 30 3 20 40
*s = append(*s, 50)
fmt.Println("5", b) //30 30 3 20 50
}