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  }