<13> go collection-func

来源:互联网 发布:java 多张图片合成pdf 编辑:程序博客网 时间:2024/05/29 13:30

集合的操作:

import (    "fmt"    "strings")// 返回数组下标,找不到返回-1func Index(vs []string, t string) int {    for i, v := range vs {        if v == t {            return i        }    }    return -1}// 是否包含t字符串func Include(vs []string, t string) bool {    return Index(vs, t) >= 0}// 任何一个字串符合f即返回truefunc Any(vs []string, f func(string) bool) bool {    for _, v := range vs {        if f(v) {            return true        }    }    return false}// 所有字符串符合f才返回truefunc All(vs []string, f func(string) bool) bool {    for _, v := range vs {        if !f(v) {            return false        }    }    return true}// 过滤掉f符合的字符串func Filter(vs []string, f func(string) bool) []string {    vsf := make([]string, 0)    for _, v := range vs {        if f(v) {            vsf = append(vsf, v)        }    }    return vsf}func Map(vs []string, f func(string) string) []string {    vsm := make([]string, len(vs))    for i, v := range vs {        vsm[i] = f(v)    }    return vsm}func main() {    var strs = []string{"peach", "apple", "pear", "plum"}    fmt.Println(Index(strs, "pear"))    fmt.Println(Include(strs, "grape"))    fmt.Println(Any(strs, func(v string) bool {        return strings.HasPrefix(v, "p")    }))    fmt.Println(All(strs, func(v string) bool {        return strings.HasPrefix(v, "p")    }))    fmt.Println(Filter(strs, func(v string) bool {        return strings.Contains(v, "e")    }))    fmt.Println(Map(strs, strings.ToUpper))}// 输出:// 2// false// true// false// [peach apple pear]// [PEACH APPLE PEAR PLUM]
0 0