106 lines
2.6 KiB
Go
106 lines
2.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func Test_Func(t *testing.T) {
|
|
var arr = [...]int{1, 2, 3}
|
|
var slice = []int{1, 2, 3}
|
|
ModifyArray(arr)
|
|
ModifySlice(slice)
|
|
t.Logf("%v %v\n", arr, slice)
|
|
assert.NotEqual(t, arr[2], 1)
|
|
assert.Equal(t, slice[2], 1)
|
|
}
|
|
|
|
func ModifyArray(arr [3]int) {
|
|
arr[2] = 1
|
|
}
|
|
|
|
func ModifySlice(slice []int) {
|
|
slice[2] = 1
|
|
slice = append(slice, 4)
|
|
slice[2] = 3
|
|
}
|
|
|
|
func Test_DefineSlice(t *testing.T) {
|
|
var arr = [...]int{1, 2, 3}
|
|
var slice1 = []int{1, 2, 3}
|
|
var slice2 = make([]int, 3)
|
|
var slice3 = arr[:]
|
|
t.Logf("arr type=%v len=%d cap=%d\n", reflect.TypeOf(arr).String(), len(arr), cap(arr))
|
|
t.Logf("slice1 type=%v len=%d cap=%d\n", reflect.TypeOf(slice1).String(), len(slice1), cap(slice1))
|
|
t.Logf("slice2 type=%v len=%d cap=%d\n", reflect.TypeOf(slice2).String(), len(slice2), cap(slice2))
|
|
t.Logf("slice3 type=%v len=%d cap=%d\n", reflect.TypeOf(slice3).String(), len(slice3), cap(slice3))
|
|
}
|
|
|
|
func Test_Modify(t *testing.T) {
|
|
arr := [...]int{1, 2, 3, 4, 5, 6, 7}
|
|
slice := arr[:]
|
|
slice[4] = 8
|
|
t.Logf("arr[4]=%v,slice[4]=%v\n", arr[4], slice[4])
|
|
assert.Equal(t, slice[4], arr[4])
|
|
slice = append(slice, 9)
|
|
slice[5] = 10
|
|
t.Logf("arr[4]=%v,slice[4]=%v\n", arr[4], slice[4])
|
|
assert.Equal(t, slice[4], arr[4])
|
|
t.Logf("arr[5]=%v,slice[5]=%v\n", arr[5], slice[5])
|
|
assert.NotEqual(t, slice[5], arr[5])
|
|
}
|
|
|
|
func Test_ModifyTwoSlice(t *testing.T) {
|
|
arr := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
|
|
slice1 := arr[1:5]
|
|
slice2 := arr[3:8]
|
|
slice1[2] = 8
|
|
t.Logf("%v %v %v\n", arr, slice1, slice2)
|
|
assert.Equal(t, slice1[2], slice2[0], arr[3])
|
|
}
|
|
|
|
func Test_Append(t *testing.T) {
|
|
slice := []int{1, 2, 3}
|
|
fmt.Printf("slice type=%v len=%d cap=%d\n", reflect.TypeOf(slice).String(), len(slice), cap(slice))
|
|
println(slice)
|
|
slice = append(slice, 1)
|
|
fmt.Printf("slice type=%v len=%d cap=%d\n", reflect.TypeOf(slice).String(), len(slice), cap(slice))
|
|
println(slice)
|
|
slice = append(slice, 1)
|
|
fmt.Printf("slice type=%v len=%d cap=%d\n", reflect.TypeOf(slice).String(), len(slice), cap(slice))
|
|
println(slice)
|
|
}
|
|
|
|
func Test_Cap(t *testing.T) {
|
|
slice1 := []int{1, 2, 3}
|
|
slice2 := make([]int, 3, 3)
|
|
last := [2]int{0, 0}
|
|
for i := 0; i < 100; i++ {
|
|
slice1 = append(slice1, 1)
|
|
slice2 = append(slice2, 1)
|
|
if last[0] != cap(slice1) {
|
|
println(slice1)
|
|
last[0] = cap(slice1)
|
|
}
|
|
if last[1] != cap(slice2) {
|
|
println(slice2)
|
|
last[1] = cap(slice2)
|
|
}
|
|
}
|
|
}
|
|
|
|
func Test_Demo(t *testing.T) {
|
|
arr := [...]int{1, 2, 3, 4}
|
|
reverse(arr[:])
|
|
t.Logf("%v\n", arr)
|
|
}
|
|
|
|
func reverse(s []int) {
|
|
for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
|
|
s[i], s[j] = s[j], s[i]
|
|
}
|
|
}
|