Golang程序 寻找切片中最大的元素
在本教程中,我们将通过一些例子来灌输如何找到一个切片中最大的元素。切片是一个元素序列,就像数组一样。数组是一个固定的元素序列,而切片是一个动态数组,这意味着它的值是不固定的,可以被改变。分片比数组更有效、更快速,而且它们是通过引用而不是通过值传递的。让我们通过这个例子来了解情况。
方法1:使用用户定义的函数和append()函数
在这个方法中,我们将看到如何使用一个以slice为参数的用户自制函数来找到一个切片中的最大元素。输出将使用fmt.Println()函数打印在控制台。让我们通过代码看看这一切是如何完成的。
语法
func append(slice, element_1, element_2…, element_N) []T
append函数用于向一个数组片断添加值。它需要一些参数。第一个参数是我们希望添加的数组,后面是要添加的值。然后,该函数返回包含所有值的数组的最终片断。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(格式包)包,其中main产生可执行代码,fmt帮助格式化输入和输出。
-
第2步 – 创建一个函数main,并在该函数中创建一个片断,使用append函数在其中添加数值。
-
第3步 – 使用Golang中的print语句将切片打印在控制台。
-
第4步–从主程序中调用用户定义的函数maximum_ele,并将slice作为参数。
-
第5步–在函数maximum_ele中设置切片中的第一个元素等于max,这意味着第一个元素被初始化为最大元素。
-
第6步 – 运行一个循环,直到片断的长度,并检查片断的元素是否大于最大元素。
-
第7步 – 如果它是真的,则设置max等于片状元素,继续同样的操作,直到找到一个最大的元素。
-
第8步 – 将最大的元素返回给函数,这个最大的元素用fmt.Println()函数打印在控制台。
示例
使用用户定义的函数和append()函数的Golang程序来寻找一个切片中最大的元素
package main
import "fmt"
func main() {
// Create 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 original slice is:", slice)
val := largest_ele(slice)
fmt.Println("The largest element in the slice is:")
fmt.Println(val) // print the largest element
}
func largest_ele(slice []int) int {
var max int
max = slice[0] // assign slice first element to max
for _, ele := range slice {
if ele > max { //check whether element is greater than max
max = ele
}
}
return max
}
输出
The original slice is: [10 20 30 40 50]
The largest element in the slice is:
50
方法2:使用数学函数
在本教程中,我们将使用max函数找到切片中最大的元素,该函数将比较循环中的元素,哪个是最大的。让我们来看看,对这个例子有一个清楚的了解。
语法
func append(slice, element_1, element_2…, element_N) []T
append函数用于向一个数组片断添加值。它需要一些参数。第一个参数是我们希望添加的数组,后面是要添加的值。然后,该函数返回包含所有值的数组的最终片断。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(格式包)包,其中main产生可执行代码,fmt帮助格式化输入和输出。
-
第2步 – 创建一个函数main,并在该函数中创建一个片断,使用append函数在其中添加数值。
-
第3步 – 使用Golang中的print语句将切片打印在控制台。
-
第4步–从主程序中调用用户定义的函数maximum_ele,并将slice作为参数。
-
第5步–在函数maximum_ele中设置切片中的第一个元素等于max,这意味着第一个元素被初始化为最大元素。
-
第6步 – 运行一个循环,直到切片的长度,并使用max函数在max_num变量上检查切片的元素是否大于max元素。
-
第7步 – 继续同样的工作,直到找到一个最大的元素。
-
第8步 – 将最大元素max_num返回给函数,这个最大元素用fmt.Println()函数打印在控制台。
示例
使用数学函数查找切片中最大元素的Golang程序
package main
import (
"fmt"
"math"
)
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)
fmt.Println("The original slice is:", slice)
maximum := largest_ele(slice)
fmt.Println("The largest element in slice is:")
fmt.Println(maximum) // print maximum element
}
func largest_ele(slice []int) int {
var max_num int
max_num = slice[0] //assign slice’s first element to max_num
for _, element := range slice {
max_num = int(math.Max(float64(max_num), float64(element)))
}
return max_num // return the maximum element to the function
}
输出
The original slice is: [10 20 30 40 50]
The largest element in slice is:
50
结论
我们用两个例子执行了从一个切片中寻找最大元素的程序。在第一个例子中,我们使用了一个自定义函数来寻找最大的元素,在第二个例子中,我们使用了max函数来寻找切片中最大的元素。这两个例子都给出了类似的输出。因此,程序成功执行。