package main

import "fmt"

// remove 返回删除了 index 处元素的新切片
// 如果 index 越界，原样返回，不做删除
func remove(s []int, index int) []int {
	if index < 0 || index >= len(s) {
		fmt.Println("数组越界")
		return s // 越界保护
	}
	// 把 index+1 之后的元素整体前移 1 位，再截掉最后一个
	copy(s[index:], s[index+1:])
	return s[:len(s)-1]
}

func main() {
	s := []int{1, 2, 3, 4, 5}
	fmt.Println("原始:", s)

	s = remove(s, 2) // 删除下标 2（元素 3）
	fmt.Println("删除后:", s)

	s = remove(s, 0) // 再删除首元素
	fmt.Println("再删首元素:", s)
}
