Golang 从片断中删除空值

Golang 从片断中删除空值

在这篇文章中,我们将通过各种例子来学习如何从一个片断中移除空值。切片是一个元素序列,就像一个数组。数组是一个固定的元素序列,而分片是一个动态数组,意味着它的值不是固定的,可以改变。分片比数组更有效、更快速,而且它们是通过引用而不是通过值传递的。让我们通过例子来学习如何执行。

方法1:使用For Loop

在这个方法中,我们将看到如何使用外部函数中的for循环从一个片断中删除一个空值。让我们通过算法和代码来看看它是如何被完成的。

语法

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

append函数用于向一个数组片断添加值。它需要一些参数。第一个参数是我们希望添加的数组,后面是要添加的值。然后,该函数返回包含所有值的数组的最终片断。

算法

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

  • 第2步 – 创建一个main函数,并在该函数中创建一个片断,该片断中的一些值包括空值。

  • 第3步– 创建一个名为removenullvalue的函数,里面有一个slice作为参数。

  • 第4步 – 创建一个名为result的空片段,这个结果将被用来追加里面的非空元素。

  • 第5步– 运行一个循环,直到切片的长度,在每一次迭代中,如果切片中的元素不等于null,就将这些元素追加到结果中,并进入下一次迭代。

  • 第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(format package)包,其中main产生可执行代码,fmt帮助格式化输入和输出。

  • 第2步 – 创建main函数,并在该函数中创建一个具有非空值和空值的片断。

  • 第3步 – 调用一个名为removenullelement的函数,里面有一个slice作为参数。

  • 第4步 – 在removenullelement函数中调用过滤器函数,并将slice和filter作为其输入。

  • 第5步 – 在过滤器函数中,创建一个名为output的空片,它将被用来追加片中的元素。

  • 第6步 – 循环运行直到slice的长度,过滤器函数将返回一个满足过滤器的新slice。

  • 第7步 – 返回的片断将由removenullelement函数获得,该函数将使用过滤器函数从片断中移除所有的空值,并将其返回给main函数。

  • 第8步 – 新的片断将通过fmt.Println()函数打印到控制台,其中ln表示新行。

例子

在这个例子中,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]

结论

我们用两个例子执行了这个从片断中去除空元素的程序。在第一种方法中,我们使用for循环来移除空元素,而在第二种方法中,我们使用过滤器方法来移除空值。这两个例子给出了相似的结果。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程