Golang 删除数组中的所有’nil’元素
本教程介绍如何从数组中删除所有nil元素。基本上,数组中有时会出现空字符串,我们希望将其删除。在本教程中,我们将学习如何使用非常简单的方法来删除这些字符串。
方法1:使用辅助函数方法
在这种方法中,我们将看到如何使用辅助函数方法来删除null元素。数组将作为函数的参数被传入,并使用Golang的打印语句将输出打印到控制台。
语法
func append(slice, element_1, element_2…, element_N) []T
append函数用于将值添加到数组片段中。它接受多个参数。第一个参数是我们希望将值添加到其中的数组,其后是要添加的值。该函数返回包含所有值的最终数组片段。
步骤
步骤1 - 在程序中声明一个名为main的包,并导入fmt。
步骤2 - 创建一个名为delete_empty的函数,参数为一个字符串数组,用于消除其中的空字符串。
步骤3 - 在函数内部创建一个数组,将非空值从原始数组中存储在其中。
步骤4 - 循环遍历原始数组直到结尾,并检查条件,如果字符串不等于空字符串,则将原始数组的值追加到新数组中。
步骤5 - 重复步骤5,直到循环终止,完成迭代后返回arr。
步骤6 - 在调用函数的主函数中打印返回的数组。
步骤7 - 使用fmt.Println()函数执行程序,它是Golang中的打印语句。这里的ln表示下一行。
示例
使用辅助函数方法从数组中删除所有空元素的Golang程序
package main
import (
"fmt"
)
func delete_empty(strarr []string) []string {
var arr []string
for _, str := range strarr {
if str != "" {
arr = append(arr, str)
}
}
return arr
}
func main() {
strarr := []string{"Abc", "Xyz", ""}
fmt.Println("The array before removal of empty element is:", strarr)
fmt.Println("The array after removal of empty element is:")
fmt.Println(delete_empty(strarr))
}
输出
The array before removal of empty element is: [Abc Xyz ]
The array after removal of empty element is:
[Abc Xyz]
方法2:使用指针方法
在这种方法中,我们将学习如何使用指针和JSON数据删除空元素。这里创建了两个数组,其中一个指向另一个。最后,arr引用了arr2。使用fmt.Println()函数打印输出,它是Golang中的打印语句。
语法
func append(slice, element_1, element_2…, element_N) []T
append函数用于向数组切片添加值。它接受多个参数。第一个参数是要添加值的数组,其后是要添加的值。函数然后返回包含所有值的最终数组切片。
步骤
步骤 1 - 在程序中声明一个main包并导入fmt包,以及一个类型为string的jsondata数组。
步骤 2 - 创建一个函数,其中一个参数指向json数据的arr,以及一个由主函数调用的带有字符串参数的delete函数。
步骤 3 - 在函数中使用jsondata声明arr2,将存储在arr2中的值将由arr引用,并最终将arr打印到控制台。
步骤 4 - 运行一个循环,直到arr的长度,并检查字符串是否不等于选择器,将字符串附加到arr2中。
步骤 5 - 循环结束后,arr将通过指针引用arr2,并且通过fmt.Println()函数在主函数中使用带有arr的括号打印输出。
示例
使用指针方法从数组中删除所有nil元素的Golang程序。
package main
import "fmt"
type jsondata []string
func (arr *jsondata) delete(selector string) {
var arr2 jsondata
for _, str := range *arr {
if str != selector {
arr2 = append(arr2, str)
}
}
*arr = arr2
}
func main() {
arr := jsondata{"foo", "", "bar", ""}
fmt.Println("The array before deletion is:")
fmt.Println(arr)
arr.delete("")
fmt.Println("The array after deletion is:")
fmt.Printf("%q", arr)
}
输出
The array before deletion is:
[foo bar ]
The array after deletion is:
["foo" "bar"]
结论
我们使用了两种方法执行了从数组中删除空元素的程序。在第一种方法中,我们使用了辅助函数的方法来删除数组的元素,在第二个示例中,我们在外部函数中使用了指针方法,其中数组作为指针传递,选择器作为参数传递。在两种情况下都获得了相似的输出。因此程序成功执行。