Golang 从切片中删除元素

Golang 从切片中删除元素

在这个教程中,我们将学习如何使用多种示例从切片中删除元素。切片是一个元素的序列,就像数组一样。数组是一个固定的元素序列,而切片是一个动态数组,这意味着它的值是不固定的,可以被改变的。切片比数组更高效、更快,而且它们是通过引用而不是值传递的。让我们通过示例来理解这些。

语法

func copy(dst, str[] type) int

copy函数在Go语言中用于将一个源数组的值复制到目标数组,并返回复制的元素数量作为结果。它以两个数组作为参数。

func append(slice, element_1, element_2…, element_N) []T

append函数用于向数组切片中添加值。它接受多个参数。第一个参数是要添加值的数组,后面是要添加的值。该函数返回包含所有值的最终数组切片。

步骤

  • 步骤 1 - 创建一个主包并在该程序中声明fmt(格式化包)包,其中主包生成可执行代码,fmt帮助格式化输入和输出。

  • 步骤 2 - 创建一个主函数,在该函数中创建一个切片,并使用append函数在切片中添加值。

  • 步骤 3 - 将切片打印在控制台上,以了解原始切片。

  • 步骤 4 - 在主函数中调用remove_ele函数,传入切片和要删除的索引作为参数。

  • 步骤 5 - 在remove_ele函数中首先检查索引是否超出范围。

  • 步骤 6 - 如果索引超出范围,则在控制台上打印相同的语句,但如果没有超出范围,则使用内置的copy函数将索引之后的元素向前移动一个位置。

  • 步骤 7 - 然后重新切片切片,以删除在使用copy函数时生成的额外索引。

  • 步骤 8 - 将切片的大小减小一个元素,以忽略额外的元素。

  • 步骤 9 - 使用fmt.println()函数打印输出,其中ln表示换行。

  • 步骤 10 - 这里,需要注意的一点是,元素实际上并没有从内存中删除。

  • 步骤 11 - 它被移动以填补空白,以满足问题的目的。

  • 步骤 12 - 这里的切片再次被重新切片,以删除额外的元素,并且对所做的更改也反映在原始切片中。

示例

在此方法中,我们将使用内置的copy函数从切片中删除一个元素。在内存中,该元素不会被删除。取而代之的是,新值将被复制以实际执行所需操作。使用fmt.Println()函数打印输出值,该函数是Golang中的打印语句。

package main
import "fmt"
func main() {

   // Create a slice of integers
   var Slice []int
   Slice = append(Slice, 10) // create slice using append function
   Slice = append(Slice, 20)
   Slice = append(Slice, 30)
   Slice = append(Slice, 40)
   Slice = append(Slice, 50)

   fmt.Println("The slice before removing element is:", Slice) 

   Slice = remove_ele(Slice, 1)
   fmt.Println("The index of element to be removed is:", 1)

   fmt.Println("The slice after removing element is: ")
   fmt.Println(Slice)
}

func remove_ele(Slice []int, index int) []int {
   // check whether the index is out of bounds or not
   if index < 0 || index >= len(Slice) {
      fmt.Println("The index is out of bounds")
   }

   copy(Slice[index:], Slice[index+1:])

   // Reslice the slice to remove the last element
   return Slice[:len(Slice)-1]
}

输出

The slice before removing element is: [10 20 30 40 50]
The index of element to be removed is: 1
The slice after removing element is: 
[10 30 40 50]

结论

我们执行了在一个示例中搜索切片元素的程序。在这个特定的示例中,我们使用了一个自定义函数来借助copy函数从切片中删除一个元素。这两个示例给出了类似的输出。因此,程序执行成功。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程