# goarray **Repository Path**: yelhjt/goarray ## Basic Information - **Project Name**: goarray - **Description**: 像php的array 一样操作 go的 map 与 数组 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-02-23 - **Last Updated**: 2023-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # goarray 像操作php的Array一样操作go的数组与map ,可以理解成有序的map ## 创建一个goarray ### 一、初始一个空map数据 ``` array := goarray.New(make(map[string]int)) fmt.Println(array) ``` ### 二、把map转成goarray #### 注意,初始一个map,这个初始的map是无序的,在传到goarray初始话时,初始这部分goarray也是无序的 ``` // 创建一个map 对象 var maps = map[string]string{ "name": "张三", "age": "18岁", "gender": "男", } // // New 一个 goarray , 注意,创建maps 时已经确定了键值、值的数据类型 array := goarray.New(maps) fmt.Println(array) // 输出:{map[age:18岁 gender:男 name:张三] [name age gender] 3 0} ``` ### 三、把数组转成goarray ``` var arr = []int{1, 1, 3, 4, 5, 4, 3, 2} arr_goarray := goarray.NewArray(arr) fmt.Println(arr_goarray) // 输出:{map[0:1 1:1 2:3 3:4 4:5 5:4 6:3 7:2] [0 1 2 3 4 5 6 7] 8 0} ``` ## 添加 ``` // 从后面添加 array.Append(you_key , you_value) // 从前面添加 array.Unshift(you_key , you_value) // 从指定位置添加 array.Add(place_num,you_key , you_value) ``` ## 删除 ``` // 删除第一个值 array.Shift() // 删除最后一个值 array.Pop() // 删除指定的key值 array.Delete(you_key) ``` ## 获取长度 ``` array.Length() ``` ## 获取某个值 ``` array.Value(you_key) ``` ## 判断某个值是否存在 ``` array.IsKey(you_key) ``` ## 按照添加顺序输出Map的Key ``` array.GetOrderMapKey() ``` ## 按照添加顺序输出Map的Value ``` array.GetOrderMapValue() ``` ## 无序输出map ``` array.GetMap() ``` ## 转成json字符串 ``` array.JsonEndoce() ``` ## json转成goarray ``` goarray.JsonDecode(json_str) ``` ## goarray 获取对应位置 ``` array.SliceArray(start_num , end_num) ``` ## 根据键值降序 ``` array.SortKeyDesc(); ``` ## 根据键值升序 ``` array.SortKeyAsc(); ``` ## 游标 ### 获取游标当前位置的值(初始游标为0,则指向第一个key值) ``` array.Current(); ``` ### 将游标指向第一位,并获取当前位置的键与值 ``` array.Reset() ``` ### 将指针指向最后一个元素 ,并获取当前位置的键与值 ``` array.End() ``` ### 将指针指向下一个元素 , 并获取键与值 ``` array.Next() ``` ### 将指针指向上一个元素 , 并获取键与值 ``` array.Prev() ``` ### 将指针指向上一个元素 , 并获取键与值 ``` array.Each() ``` ### 游标的使用 ``` for i := 0; i < array.Length(); i++ { k, v, e := array.Each() if e != nil { fmt.Println(e) break } fmt.Printf("key:%v => value : %v err %v\n", k, v, e) } ```