β

Go语言中的切片操作

ASPIRE 302 阅读

=Start=

缘由:

在阅读《Go语言程序设计》的字符串操作那一章时看到的内容,里面的代码挺实用的,就记录下来了;后来发现在Golang的Wiki里面有更为全面、详细的介绍/技巧: SliceTricks

记录:
// 内置的 append() 函数接受一个切片和一个或者更多值,将参数中的值插入原始切片末尾,返回一个(可能是新的)切片

// 自定义切片插入位置的功能函数
func InsertStringSliceCopy(slice, insertion []string, index int) []string {
	result := make([]string, len(slice)+len(insertion))
	at := copy(result, slice[:index])
	at += copy(result[at:], insertion)
	copy(result[at:], slice[index:])
	return result
}

// 自定义切片插入位置的功能函数2
func InsertStringSlice(slice, insertion []string, index int) []string {
	return append(slice[:index], append(insertion, slice[index:]...)...)
}

/*
在Go语言中删除切片中的元素:
删除切片开头、结尾的元素非常简单;从切片中间取元素也非常简单
从切片的中间删除元素就需要一点点技巧了(使用append将前后两部分拼接起来,并将值赋回给切片)
*/
// 自定义切片删除位置的功能函数
func RemoveStringSliceCopy(slice []string, start, end int) []string {
	result := make([]string, len(slice)-(end-start))
	at := copy(result, slice[:start])
	copy(result[at:], slice[end:])
	return result
}

// 自定义切片删除位置的功能函数2
func RemoveStringSlice(slice []string, start, end int) []string {
	return append(slice[:start], slice[end:]...)
}
参考链接:

=EOF=

作者:ASPIRE
Read more, write more, know more.
原文地址:Go语言中的切片操作, 感谢原作者分享。