在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背景。我知道这是偏离主题的,但对有用资源的建议将是一个优势。