Menu
CoddyTech

删除元素

Coddy Go 中的切片和映射 课程的第 14 课,共 21 课。

到目前为止,我们已经学习了如何向切片添加元素、如何复制切片、如何比较切片,以及如何获取切片的长度。

现在来思考一个问题:我们如何从切片中删除指定的元素?

遗憾的是,没有用于此操作的内置函数,但结合我们学过的内容,就能完成这个操作。

假设我们有一个这样的切片:

books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}

如果我们需要得到一个不含指定元素的新切片,比如删除 "PostgreSQL",你能想到该怎么做吗?

如果你还记得切片运算符,我们可以这样使用:

books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}
fmt.Println(books[:4])
fmt.Println(books[5:])

我们会得到这样的两个切片:

[Golang JavaScript Java Python]
[TypeScript]

这样,我们就成功删除了元素 "PostgreSQL",但还需要把这两个切片合并成一个。因此,我们可以使用 <strong>append</strong> 函数来连接这两个切片:

books := []string{"Golang", "JavaScript", "Java", "Python", "PostgreSQL", "TypeScript"}
books = append(books[:4], books[5:]...)
fmt.Println(books)

在这段代码中,我们使用 <strong>append</strong> 函数将第二个切片(<strong>books[5:]</strong>)添加到第一部分(<strong>books[:4]</strong>)。注意,我们使用 <strong>...</strong> 将第二部分转换为单独的元素,再将它们添加到第一部分。

结果如下:

[Golang JavaScript Java Python TypeScript]

我们已经成功从 <strong>books</strong> 切片中删除了 "PostgreSQL" 这一项。
 

challenge icon

挑战

简单

编写一个程序,接收用户输入,并删除切片中由用户提供的数字 所表示索引对应的项目。

亲手试试

package main

import "fmt"

func main() {
	// 获取用户输入。不要修改这里!
	var x int
	fmt.Scanln(&x)
	
	// 定义一个切片。不要修改这里!
	lang := []string{"Rust", "Java", "JavaScript", "Golang", "Haskell", "C#"}
	
	// 删除指定索引处的元素
 

	// 输出更新后的切片
	 
}

Go 中的切片和映射中的所有课

自己练习: Go 在线编译器