github.com/zhongdalu/gf@v1.0.0/g/container/garray/garray_z_example_test.go (about) 1 // Copyright 2018 gf Author(https://github.com/zhongdalu/gf). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/zhongdalu/gf. 6 7 package garray_test 8 9 import ( 10 "fmt" 11 "github.com/zhongdalu/gf/g/container/garray" 12 ) 13 14 func Example_basic() { 15 // 创建普通的数组,默认并发安全(带锁) 16 a := garray.New() 17 18 // 添加数据项 19 for i := 0; i < 10; i++ { 20 a.Append(i) 21 } 22 23 // 获取当前数组长度 24 fmt.Println(a.Len()) 25 26 // 获取当前数据项列表 27 fmt.Println(a.Slice()) 28 29 // 获取指定索引项 30 fmt.Println(a.Get(6)) 31 32 // 查找指定数据项是否存在 33 fmt.Println(a.Contains(6)) 34 fmt.Println(a.Contains(100)) 35 36 // 在指定索引前插入数据项 37 a.InsertAfter(9, 11) 38 // 在指定索引后插入数据项 39 a.InsertBefore(10, 10) 40 41 fmt.Println(a.Slice()) 42 43 // 修改指定索引的数据项 44 a.Set(0, 100) 45 fmt.Println(a.Slice()) 46 47 // 搜索数据项,返回搜索到的索引位置 48 fmt.Println(a.Search(5)) 49 50 // 删除指定索引的数据项 51 a.Remove(0) 52 fmt.Println(a.Slice()) 53 54 // 清空数组 55 fmt.Println(a.Slice()) 56 a.Clear() 57 fmt.Println(a.Slice()) 58 59 // Output: 60 // 10 61 // [0 1 2 3 4 5 6 7 8 9] 62 // 6 63 // true 64 // false 65 // [0 1 2 3 4 5 6 7 8 9 10 11] 66 // [100 1 2 3 4 5 6 7 8 9 10 11] 67 // 5 68 // [1 2 3 4 5 6 7 8 9 10 11] 69 // [1 2 3 4 5 6 7 8 9 10 11] 70 // [] 71 } 72 73 func Example_rand() { 74 array := garray.NewFrom([]interface{}{1, 2, 3, 4, 5, 6, 7, 8, 9}) 75 // 随机返回两个数据项(不删除) 76 fmt.Println(array.Rands(2)) 77 fmt.Println(array.PopRand()) 78 } 79 80 func Example_pop() { 81 array := garray.NewFrom([]interface{}{1, 2, 3, 4, 5, 6, 7, 8, 9}) 82 fmt.Println(array.PopLeft()) 83 fmt.Println(array.PopLefts(2)) 84 fmt.Println(array.PopRight()) 85 fmt.Println(array.PopRights(2)) 86 87 // Output: 88 // 1 89 // [2 3] 90 // 9 91 // [7 8] 92 } 93 94 func Example_merge() { 95 array1 := garray.NewFrom([]interface{}{1, 2}) 96 array2 := garray.NewFrom([]interface{}{3, 4}) 97 slice1 := []interface{}{5, 6} 98 slice2 := []int{7, 8} 99 slice3 := []string{"9", "0"} 100 fmt.Println(array1.Slice()) 101 array1.Merge(array1) 102 array1.Merge(array2) 103 array1.Merge(slice1) 104 array1.Merge(slice2) 105 array1.Merge(slice3) 106 fmt.Println(array1.Slice()) 107 108 // Output: 109 // [1 2] 110 // [1 2 1 2 3 4 5 6 7 8 9 0] 111 }