Golang 实现slice的插入操作

前言:我们知道,golang没为slice提供insert。而如果直接使用[start:end]拼接,会对原slice产生影响。下面就说一下如何实现insert

思路

  1. 创建一个新的切片 newSlice,长度为原有切片 slice 的长度加1
  2. newSlice 的前半部分与插入元素之前的部分复制自原有切片 slice。
  3. 插入要添加的元素到 newSlice的指定位置。
  4. newSlice 的后半部分与插入元素之后的部分复制自原有切片 slice。
  5. 此时, newSlice 即为插入元素后的切片。

代码实现

/*
*@slice :原来的数组
*@index:插入的位置
*@value:插入的值
*/
package main

import "fmt"

func insertSlice(slice []int, index int, value int) []int {
	// 确保插入位置在有效范围内
	if index < 0 || index > len(slice) {
		fmt.Println("Invalid index for insertion")
		return slice
	}

	// 创建新的切片,长度为原有切片长度加1
	newSlice := make([]int, len(slice)+1)

	// 将前半部分复制自原有切片
	copy(newSlice[:index], slice[:index])

	// 插入要添加的元素
	newSlice[index] = value

	// 将后半部分复制自原有切片
	copy(newSlice[index+1:], slice[index:])

	return newSlice
}

func main() {
	slice := []int{1, 2, 3, 4, 5}

	// 在索引为2的位置插入元素6
	newSlice := insertSlice(slice, 2, 6)
	fmt.Println(newSlice) // 输出:[1 2 6 3 4 5]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值