Go语言程序:在不使用库函数的情况下删除数组中的元素


Go 语言中的数组被定义为一种数据结构,用于存储元素在连续的内存位置。数组允许我们在恒定时间内搜索和存储元素。数组使用索引来存储元素,索引从 0 开始,到 n - 1 结束,其中 n 是数组的长度。

方法 1:使用外部用户定义函数

以下方法说明了如何使用外部函数从整数数组中删除特定的整数元素。

算法

  • 步骤 1 − 导入 fmt 包。

  • 步骤 2 − 定义名为 removeOccurrence() 的函数。

  • 步骤 3 − 在此函数中,我们检查数组的当前元素是否等于我们希望删除的值。

  • 步骤 4 − 如果不等于,则我们将该元素存储在同一数组中,否则忽略该元素并重复此过程,直到遍历完整个数组。

  • 步骤 5 − 检查完所有元素后,我们需要将最终数组作为结果返回。

  • 步骤 6 − 开始 main() 函数。初始化一个数组并为其赋值。

  • 步骤 7 − 在屏幕上打印数组。

  • 步骤 8 − 调用 removeOccurrence() 函数,并将数组和要删除的元素作为参数传递给它。

  • 步骤 9 − 将从函数获得的结果存储在一个名为 output 的变量中。

  • 步骤 10 − 使用 fmt.Println() 函数在屏幕上打印最终结果。

示例

在下面的代码中,我们使用了外部用户定义函数来从整数数组中删除一个元素。

package main
import "fmt"
func removeOccurrence(nums [8]int, val int) []int {
   lenArr := len(nums)
   var k int = 0
   for i := 0; i < lenArr; {
      if nums[i] != val {
         nums[k] = nums[i]
         k++
      }
      i++
   }
   return nums[0:k]
}

func main() {
   arr1 := [8]int{11, 21, 32, 41, 54, 79, 83, 47}
   fmt.Println("The first array Arr1 is:", arr1)
   fmt.Println()
   output := removeOccurrence(arr1, 41)
   fmt.Println("The array obtained after removing the element 41 is:", output)
}

输出

The first array Arr1 is: [11 21 32 41 54 79 83 47]

The array obtained after removing the element 41 is: [11 21 32 54 79 83 47]

方法 2:使用单个函数

在此方法中,我们将通过 2 个 Go 编程示例来了解删除数组中元素的两种不同技术。

算法

  • 步骤 1 − 导入 fmt 包。

  • 步骤 2 − 开始 main() 函数。初始化一个字符串数组并为其赋值。

  • 步骤 3 − 在屏幕上打印数组。

  • 步骤 4 − 将要删除的值存储在一个新变量中,并使用 for 循环以及 range 函数来迭代数组。

  • 步骤 5 − 如果当前元素不等于要删除的值,则将该值更新到数组并继续循环,直到遍历完整个数组。

  • 步骤 6 − 现在,将这样获得的新数组复制到一个新数组中,并使用 fmt.Println() 函数在屏幕上打印最终获得的数组。

示例

package main
import (
   "fmt"
)
func main() {
   originalArray := [5]string{"a", "b", "c", "c", "d"}
   fmt.Println("The original array is:", originalArray)
   val := "c"
   j := 0
   for _, v := range originalArray {
      if v != val {
         originalArray[j] = v
         j++
      }
   }
   newArray := originalArray[:j]
   fmt.Println("The new array is:", newArray)
}

输出

The original array is: [a b c c d]
The new array is: [a b d]

示例 2

package main
import "fmt"
func main() {
   arr := []int{11, 21, 32, 41, 54, 79, 83, 47}
   fmt.Println("The given array is:", arr)
   fmt.Println()
   var val int = 32
   var j int = 0
   fmt.Println("The value to be removed is:", val)
   var res []int
   for i := 0; i < len(arr); i++ {
      if arr[i] != val {
         arr[j] = arr[i]
         j++
      }
   }
   res = arr[:j]
   fmt.Println("The array obtained after removing the element", val, "is:", res)
}

输出

The given array is: [11 21 32 41 54 79 83 47]

The value to be removed is: 32
The array obtained after removing the element 32 is: [11 21 41 54 79 83 47]

结论

我们已经成功编译并执行了一个 Go 语言程序,用于从数组中删除特定元素,并附带示例。本文使用了三个示例,第一个程序使用外部函数从整数数组中删除一个整数值,而第二个程序则将逻辑应用于字符串数组。在最后一个示例中,我们展示了如何使用 for 循环从数组中删除元素。

更新于: 2023年2月16日

454 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.