php array 对应于golang
package main
import (
"fmt"
"sort"
)
// array_merge - 合并一个或多个数组
func arrayMerge(arrays ...[]interface{}) []interface{} {
var result []interface{}
for _, arr := range arrays {
result = append(result, arr...)
}
return result
}
// in_array - 检查数组中是否存在某个值
func inArray(needle interface{}, haystack []interface{}) bool {
for _, item := range haystack {
if item == needle {
return true
}
}
return false
}
// array_keys - 返回数组中所有的键名
func arrayKeys(arr map[string]interface{}) []string {
keys := make([]string, 0, len(arr))
for k := range arr {
keys = append(keys, k)
}
return keys
}
// array_values - 返回数组中所有的值
func arrayValues(arr map[string]interface{}) []interface{} {
values := make([]interface{}, 0, len(arr))
for _, v := range arr {
values = append(values, v)
}
return values
}
// array_filter - 用回调函数过滤数组中的元素
func arrayFilter(arr []interface{}, callback func(interface{}) bool) []interface{} {
result := make([]interface{}, 0)
for _, v := range arr {
if callback(v) {
result = append(result, v)
}
}
return result
}
// array_map - 将回调函数作用到给定数组的每个元素上
func arrayMap(arr []interface{}, callback func(interface{}) interface{}) []interface{} {
result := make([]interface{}, len(arr))
for i, v := range arr {
result[i] = callback(v)
}
return result
}
// array_reverse - 返回一个单元顺序相反的数组
func arrayReverse(arr []interface{}) []interface{} {
result := make([]interface{}, len(arr))
for i, j := 0, len(arr)-1; i < len(arr); i, j = i+1, j-1 {
result[i] = arr[j]
}
return result
}
// array_slice - 从数组中取出一段
func arraySlice(arr []interface{}, offset, length int) []interface{} {
if offset < 0 {
offset = len(arr) + offset
}
if offset < 0 {
offset = 0
}
if length < 0 {
length = len(arr) + length - offset
}
if offset+length > len(arr) {
length = len(arr) - offset
}
return arr[offset : offset+length]
}
// sort - 对数组排序
func sortSlice(arr []int) {
sort.Ints(arr)
}
func main() {
// 测试示例
arr1 := []interface{}{1, 2, 3}
arr2 := []interface{}{4, 5, 6}
fmt.Println("arrayMerge:", arrayMerge(arr1, arr2))
fmt.Println("inArray:", inArray(3, arr1))
assocArr := map[string]interface{}{
"name": "John",
"age": 30,
"city": "New York",
}
fmt.Println("arrayKeys:", arrayKeys(assocArr))
fmt.Println("arrayValues:", arrayValues(assocArr))
numbers := []interface{}{1, 2, 3, 4, 5, 6}
fmt.Println("arrayFilter:", arrayFilter(numbers, func(v interface{}) bool {
return v.(int)%2 == 0
}))
fmt.Println("arrayMap:", arrayMap(numbers, func(v interface{}) interface{} {
return v.(int) * 2
}))
fmt.Println("arrayReverse:", arrayReverse(numbers))
fmt.Println("arraySlice:", arraySlice(numbers, 2, 3))
intArr := []int{5, 3, 1, 4, 2}
sortSlice(intArr)
fmt.Println("sort:", intArr)
}
滴水成冰,世间不存在毫无意义的付出,时间终会给你答案。

浙公网安备 33010602011771号