Golang 删除切片中的null值

Golang 删除切片中的null值

在本文中,我们将学习如何使用不同的示例从切片中删除null值。切片是一系列元素,就像数组一样。数组是一个固定的元素序列,而切片是一个动态数组,意味着它的值是不固定的,可以改变的。切片比数组更高效更快,而且它们是通过引用而不是值传递的。让我们通过示例学习如何执行它。

方法1:使用for循环

在这种方法中,我们将看到如何使用for循环在外部函数中删除切片中的null值。让我们通过算法和代码来了解它是如何完成的。

语法

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

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

步骤

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

  • 步骤2 − 创建一个main函数,在该函数中创建一个包含一些值(包括空值)的切片。

  • 步骤3 − 创建一个名为removenullvalue的函数,其参数为一个切片。

  • 步骤4 − 创建一个名为result的空切片,该result将用于附加其中的非nil元素。

  • 步骤5 − 循环直到切片的长度,并在每次迭代中检查切片的元素是否不等于null,将这些元素附加到result中并继续下一次迭代。

  • 步骤6 − 循环结束后,将输出切片返回给函数。

  • 步骤7 − 使用fmt.Println()函数将输出切片打印在控制台上,其中ln表示换行。

示例

Golang程序使用for循环从切片中删除null的示例。

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 20  30  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函数,并在该函数中创建一个包含非nil值和nil值的切片。

  • 步骤3 - 调用名为removenullelement的函数,并将切片作为参数传递给它。

  • 步骤4 - 在removenullelement函数中,使用切片和过滤器作为输入调用filter函数。

  • 步骤5 - 在filter函数内部,创建一个名为output的空切片,用于附加切片的元素。

  • 步骤6 - 运行循环,直到切片的长度和filter函数将返回满足过滤条件的新切片。

  • 步骤7 - 返回的切片将由removenullelement函数获取,该函数将使用filter函数从切片中删除所有的nil值,并将其返回给main函数。

  • 步骤8 - 使用fmt.Println()函数在控制台打印新切片,其中ln表示换行。

示例

使用filter在示例中删除切片中的null的Golang程序。

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 2  3  4]
The slice after removing null element is:
[1 2 3 4]

结论

我们通过两个示例执行了从切片中删除nil元素的程序。在第一种方法中,我们使用for循环删除nil元素,而在第二种方法中,我们使用了一个过滤器方法来删除null值。两个示例都得到了类似的结果。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程