Golang程序 在切片中搜索一个元素
在本教程中,我们将通过不同的例子来掌握如何在slice中搜索一个元素。切片是一个元素序列,就像数组一样。数组是一个固定的元素序列,而slice是一个动态数组,这意味着它的值不是固定的,可以改变。分片比数组更有效率和速度,而且它们是通过引用而不是通过值来传递的。
语法
func append(slice, element_1, element_2…, element_N) []T
append函数用于向一个数组片断添加值。它需要一些参数。第一个参数是我们希望添加的数组,后面是要添加的值。然后,该函数返回包含所有值的数组的最终片断。
方法1:使用一个外部用户定义的函数
在这个方法中,我们将使用一个外部函数来搜索分片中的元素。切片和要搜索的元素将作为参数传入函数。输出将使用fmt.Println()函数打印在控制台。让我们通过代码看看这一切是如何完成的。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(格式包)包,其中main产生可执行代码,fmt帮助格式化输入和输出。
-
第2步 – 创建一个名为search_ele的函数,以slice和要搜索的元素为参数,该函数由main调用。
-
第3步 – 运行一个循环,直到片断的长度,并检查要搜索的元素是否等于片断的任何元素。
-
第4步 – 如果是真的,返回索引,如果不是真的,返回-1给自定义函数。
-
第5步 – 调用主函数。
-
第6步–在主函数中,如果数值等于-1,则打印该元素不存在于片断中,否则打印其存在于片断中。
-
第7步 – 使用fmt.Println()函数执行打印语句,其中ln代表新行。
示例
使用外部函数在切片中搜索一个元素的Golang程序
package main
import "fmt"
func main() {
// Declare a slice of integers
var slice []int
slice = append(slice, 10) // create slice using append function
slice = append(slice, 20)
slice = append(slice, 30)
slice = append(slice, 40)
slice = append(slice, 50)
fmt.Println("The slice given here is:", slice)
// Call the search function and store the value in a variable named val
val := search_ele(slice, 40)
fmt.Println("The value to be searched from the slice is:", 40)
if val != -1 {
fmt.Println("The element is found in slice at index:", val)
} else {
fmt.Println("The element was not found in the slice")
}
}
func search_ele(slice []int, key int) int {
for i, element := range slice {
if element == key { // check the condition if its true return index
return i
}
}
return -1
}
输出
The slice given here is: [10 20 30 40 50]
The value to be searched from the slice is: 40
The element is found in slice at index: 3
方法2:使用主函数
在这个方法中,我们将使用main函数来搜索片断中的元素。一个标志将被创建,它的值将帮助我们打印该元素是否存在于片断中。输出将使用fmt.Println()函数打印在控制台。让我们通过代码看看这一切是如何完成的。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(格式包)包,其中main产生可执行代码,fmt帮助格式化输入和输出。
-
第2步 – 创建一个主函数,并在该函数中使用append函数创建一个片断,以及一个初始值为false的bool类型的变量flag。
-
第3步 – 创建一个变量项,并为其分配要搜索的值。
-
第4步 – 运行一个循环,直到切片的长度,并检查要搜索的元素是否等于切片的任何元素。
-
第5步–如果是真的,则将标志设为真,并中断循环,但如果不是真的,则将循环运行到结束,在循环结束后检查一个条件。
-
第6步 – 如果标志为真,则打印该元素存在于切片中的声明,否则打印该元素不存在于切片中。
-
第7步 – 使用fmt.Println()函数执行打印语句,其中ln代表新行。
示例
Golang程序使用main函数在切片中搜索一个元素。
package main
import "fmt"
func main() {
var slice []int
slice = append(slice, 10) // create slice using append function
slice = append(slice, 20)
slice = append(slice, 30)
slice = append(slice, 40)
slice = append(slice, 50)
var flag bool = false // assign initial value as false
fmt.Println("The slice given here is:", slice)
var item int = 8
fmt.Println("The value to be searched from the slice is:", item)
for element := range slice {
if element == item {
flag = true // break the loop if flag is true
break
}
}
if flag {
fmt.Println("The element is present in the slice")
} else {
fmt.Println("The element is not present in the slice")
}
}
输出
The slice given here is: [10 20 30 40 50]
The value to be searched from the slice is: 8
The element is not present in the slice
结论
我们用两个例子执行了搜索片断元素的程序。在第一个例子中,我们使用了一个自定义函数来搜索元素,在第二个例子中,我们使用了主函数来搜索值。这两个例子都给出了类似的输出。因此,程序成功执行。