Golang 以不使用库函数的方式删除数组中的项
在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:使用一个函数
在这个方法中,我们将看到使用两个不同的技术从数组中删除项的两个示例。
步骤
- 步骤1 − 导入fmt包。
-
步骤2 − 启动main()函数。初始化一个字符串数组并赋值。
-
步骤3 − 在屏幕上打印数组。
-
步骤4 − 将要删除的值存储在一个新变量中,并使用for循环和range函数遍历数组。
-
步骤5 − 如果当前元素不等于要删除的值,则将该值更新到数组中,并继续循环,直到整个数组都遍历完毕。
-
步骤6 − 现在,将获取到的新数组复制到一个新数组中,并使用fmt.Println()函数将所得到的最终数组打印到屏幕上。
示例1
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循环从数组中删除元素。