更好的方式来处理切片

时间:2017-03-27 13:16:31

标签: go slice

在Go中使用slice时有一个概念性问题。

假设我们想编写一个函数来对一片字符串执行操作并返回新的片。 上述函数的参数是字符串的原始片段和要对项目执行的操作。

Method-01:声明一个空切片并向其添加新值

func Operation1(original []string, converter func(string) string) []string { 
    var converted []string
    for _, item := range original {
        converted = append(converted, converter(item))
    }
    return converted
}

方法-02:分配一个确定大小的切片并索引值。

func Operation2(original []string, converter func(string) string) []string {
     // since the operation on each item cannot lead to its deletion from the slice
    converted := make([]string, len(original))

    for index, item := range original {
        converted[index] = converter(item)
    }
    return converted
}

Q1。我想知道用于声明和访问切片元素的上述哪些函数/技术在Go代码中是惯用的。

Q2。我在一堆测试中尝试了这两个函数,发现Operation1函数的执行速度比Operation2略快。欢迎这一观察背后的任何原因。

P.S:我在学习Go 3天后来自Python背景。我知道这是偏离主题的,但对有用资源的建议将是一个优势。

0 个答案:

没有答案