Go 语言移除切片中的空值
在本文中,我们将学习如何使用各种示例从切片中移除空值。切片就像数组一样,是一系列元素的序列。数组是一系列固定的元素,而切片是动态数组,这意味着它的值不是固定的,可以更改。切片比数组更高效、更快,此外,它们是通过引用而不是通过值传递的。让我们通过示例学习如何执行它。
方法 1:使用 For 循环
在这种方法中,我们将了解如何在外部函数中使用 for 循环从切片中移除空值。让我们通过算法和代码了解它是如何完成的。
语法
func append(slice, element_1, element_2…, element_N) []T
append 函数用于向数组切片添加值。它接受多个参数。第一个参数是要向其添加值的数组,后跟要添加的值。然后,该函数返回包含所有值的最终数组切片。
算法
步骤 1 − 创建一个名为 main 的包,并在程序中声明 fmt(格式化包),其中 main 生成可执行代码,fmt 帮助格式化输入和输出。
步骤 2 − 创建一个 main 函数,并在该函数中创建一个切片,其中包含一些值,包括空值。
步骤 3 − 创建一个名为 removenullvalue 的函数,其中包含一个切片作为参数。
步骤 4 − 创建一个名为 result 的空切片,此结果将用于向其中追加非空元素。
步骤 5 − 运行一个循环,直到切片的长度,并在每次迭代中检查切片的元素是否不等于空,将这些元素追加到 result 中,并移动到下一个迭代。
步骤 6 − 循环终止后,将输出切片返回到函数。
步骤 7 − 输出切片将使用 fmt.Println() 函数打印到控制台,其中 ln 表示换行。
示例
Go 语言程序,使用 for 循环从示例中的切片中移除空值。
package main import "fmt" func removenullvalue(slice []interface{}) []interface{} { var output []interface{} for _, element := range slice { if element != nil { //if condition satisfies add the elements in new slice output = append(output, element) } } return output //slice with no nil-values } func main() { slice := []interface{}{10, 20, nil, 30, nil, 40} //create slice fmt.Println("The original slice is:", slice) slice = removenullvalue(slice) fmt.Println("The slice after removal of null value is:") fmt.Println(slice) // Output: [1 2 3 4] }
输出
The original slice is: [10 2030 40] The slice after removal of null value is: [10 20 30 40]
方法 2:使用过滤器
在此示例中,我们将了解如何在外部函数中使用 for 循环从切片中移除空值。让我们通过算法和代码了解它是如何完成的。
语法
func append(slice, element_1, element_2…, element_N) []T
append 函数用于向数组切片添加值。它接受多个参数。第一个参数是要向其添加值的数组,后跟要添加的值。然后,该函数返回包含所有值的最终数组切片。
算法
步骤 1 − 创建一个名为 main 的包,并在程序中声明 fmt(格式化包),其中 main 生成可执行代码,fmt 帮助格式化输入和输出。
步骤 2 − 创建 main 函数,并在该函数中创建一个包含非空值和空值的切片。
步骤 3 − 调用一个名为 removenullelement 的函数,其中包含一个切片作为参数。
步骤 4 − 在 removenullelement 函数中,调用 filter 函数,并将切片和过滤器作为输入。
步骤 5 − 在 filter 函数内部,创建一个名为 output 的空切片,该切片将用于追加切片的元素。
步骤 6 − 运行一个循环,直到切片的长度,并且 filter 函数将返回一个满足过滤条件的新切片。
步骤 7 − removenullelement 函数将获得返回的切片,该函数将使用 filter 函数从切片中移除所有空值,并将其返回到 main 函数。
步骤 8 − 新切片将使用 fmt.Println() 函数打印到控制台,其中 ln 表示换行。
示例
Go 语言程序,使用过滤器从示例中的切片中移除空值。
package main import "fmt" func removenullelement(slice []interface{}) []interface{} { return filter(slice, func(i interface{}) bool { return i != nil }) } func filter(slice []interface{}, f func(interface{}) bool) []interface{} { var output []interface{} for _, element := range slice { if f(element) { output = append(output, element) //the values that satisfy filter will be appended in the output } } return output } func main() { slice := []interface{}{1, 2, nil, 3, nil, 4} //create slice fmt.Println("The original slice is:", slice) slice = removenullelement(slice) fmt.Println("The slice after removing null element is:") fmt.Println(slice) // Output: [1 2 3 4] }
输出
The original slice is: [1 23 4] The slice after removing null element is: [1 2 3 4]
结论
我们使用两个示例执行了从切片中移除空元素的程序。在第一种方法中,我们使用 for 循环移除空元素,在第二种方法中,我们使用过滤器方法移除空值。这两个示例给出类似的结果。