将原来的数据往后移动几个位置, 然后把需要插入的数据放到前面, 参考 java 里 ArrayList 的 insert()实现
你把 append 的参数调换一下不就行了吗
你们说的对 我以为 append 只有一种方法 就是追加单个元素
搜了下发现
append 的用法有两种:
slice = append(slice, elem1, elem2)
slice = append(slice, anotherSlice…)
还有另一种用法 slice = append([]byte,byte)
这就导致一个结果,如果想要给一个 byte 切片首部追加的话,无法用楼上说的几种方法。。
imgUrl := “/group1/2021/01/20/picture001.img"
imgBytes := strings.Split(strings.Trim(imgUrl,”/"), “/”)
newBytes := append([]string{“head”},imgBytes…)
fmt.Println(newBytes)
在 Go 语言中,slice
是一种动态数组,提供了灵活且高效的数组操作。若要将一个 slice
追加到另一个 slice
的头部,可以使用以下几种方法。虽然标准库没有直接提供类似 append
但用于头部插入的函数,但我们可以通过一些简单的操作来实现这一需求。
一种常见的方法是使用 append
函数结合切片拼接。这里是一个简单的示例:
// 假设有两个 slice
slice1 := []int{2, 3, 4}
slice2 := []int{1}
// 要将 slice2 追加到 slice1 的头部,可以先创建一个新的 slice
// 该 slice 包含 slice2 的所有元素,然后是 slice1 的所有元素
result := append(slice2, slice1...)
// 此时,result 就是将 slice2 追加到 slice1 头部的结果
fmt.Println(result) // 输出: [1 2 3 4]
需要注意的是,append
函数会创建一个新的 slice
,因为它可能会分配底层的数组空间来容纳新的元素。因此,原 slice
(slice1
和 slice2
)的内容不会改变,而是返回一个新的 slice
(result
)。
这种方法的时间复杂度主要取决于 append
操作的性能,而在大多数情况下,由于 Go 对底层数组的优化,这种操作是高效且快速的。