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)
}

  

posted @ 2025-06-16 10:56  知风阁  阅读(7)  评论(0)    收藏  举报