Go语言程序:从切片中移除子集
切片类似于数组,唯一的区别是数组是元素的固定序列,而切片中的数组元素是动态的。这使得切片在各种应用中更有效率和更快。在切片中,元素是通过引用而不是值传递的。在本文中,我们将学习使用 Go 语言编程从切片中移除子集的不同技巧。
语法
func append(slice, element_1, element_2…, element_N) []T
append 函数用于向数组切片添加值。它接受多个参数。第一个参数是要添加值的数组,后跟要添加的值。然后,该函数返回包含所有值的最终数组切片。
算法
步骤 1 − 创建一个名为 main 的包并声明 fmt(格式化包)包
步骤 2 − 在 main 函数中创建一个切片,并在该切片中添加值。
步骤 3 − 创建切片的子集并调用内部函数
步骤 4 − 创建一个输出切片并遍历该切片
步骤 5 − 打印输出
示例 1
在本例中,我们将了解如何使用嵌套 for 循环从切片中移除子集。
package main import "fmt" func main() { slice := []int{10, 20, 30, 40, 50, 60} //create slice fmt.Println("The elements of slice are:", slice) subset := []int{30, 40, 50, 60} //create subset fmt.Println("The elements of subset which are to be removed are:", subset) slice = removesubset(slice, subset) // Call the removesubset function fmt.Println("The slice after removing elements subset from it are:") fmt.Println(slice) } // removesubset function func removesubset(slice, subset []int) []int { for _, val := range subset { for i, element := range slice { if val == element { slice = append(slice[:i], slice[i+1:]...) //remove subset using append function break } } } return slice //return slice to the function after subsets are removed }
输出
The elements of slice are: [10 20 30 40 50 60] The elements of subset which are to be removed are: [30 40 50 60] The slice after removing elements subset from it are: [10 20]
示例 2
在本例中,我们将使用 map 来存储子集的元素,该子集将使用 make 函数创建,make 函数是 Go 语言中的内置函数。
package main import "fmt" func main() { slice := []int{10, 20, 30, 40, 50, 60} //create slice fmt.Println("The elements of slice are:", slice) subset := []int{30, 40, 50, 60} //create subset fmt.Println("The elements of subset are:", subset) slice = removesubset(slice, subset) fmt.Println("The slice after removal of elements is:") fmt.Println(slice) } func removesubset(slice, subset []int) []int { subsetmap := make(map[int]bool) //create subsetmap using make function for _, element := range subset { subsetmap[element] = true } var output []int for _, val := range slice { if !subsetmap[val] { output = append(output, val) } } return output //return output slice without subsets }
输出
The elements of slice are: [10 20 30 40 50 60] The elements of subset are: [30 40 50 60] The slice after removal of elements is: [10 20]
结论
我们使用两个示例执行了从切片中移除子集的程序。在第一个示例中,我们使用了嵌套 for 循环,在第二个示例中,我们使用了 map 来存储子集的值。
广告