Go语言程序:从切片中获取最大值和最小值
在本文中,我们将学习如何从切片中获取最大和最小元素。切片类似于数组,都是元素的序列。数组是固定长度的元素序列,而切片是动态数组,这意味着它的长度不是固定的,可以改变。切片比数组更高效、更快,并且它们是按引用传递而不是按值传递。让我们通过不同的示例和基于它们的算法来理解这个基本概念。
方法一:使用辅助函数
在此方法中,我们将学习如何使用外部函数从切片中获取最大和最小元素。使用 `fmt.Println()` 函数打印获得的最小值和最大值,该函数用于在 Go 语言中打印语句。
语法
func append(slice, element_1, element_2…, element_N) []T
`append` 函数用于向数组切片添加值。它接受多个参数。第一个参数是要添加值的数组,后面跟着要添加的值。然后,该函数返回包含所有值的最终数组切片。
算法
步骤 1 − 创建一个 `main` 包,并在程序中声明 `fmt`(格式化包),其中 `main` 生成可执行代码,`fmt` 帮助格式化输入和输出。
步骤 2 − 创建一个 `main` 函数,并在该函数中使用 `append` 函数创建一个切片和一些值。
步骤 3 − 在函数内部调用 `minandmax` 函数,并将切片作为参数传递。
步骤 4 − 在 `minandmax` 函数中,将切片的第一个元素设置为 `min` 和 `max`。
步骤 5 − 运行一个循环直到切片的长度,并在第一种情况下检查切片中的数字是否小于 `min` 值,如果小于,则将 `min` 值设置为该数字。
步骤 6 − 在下一个条件中,检查数字是否大于 `max` 值,如果大于,则将 `max` 值设置为该数字。重复此过程,直到循环终止。
步骤 7 − 我们获得 `min` 和 `max` 元素,将其返回到函数并使用 `fmt.Println()` 函数打印,其中 `ln` 指的是换行符。
示例
使用辅助函数从切片中获取最大和最小元素的 Go 语言程序
package main import ( "fmt" ) func main() { var values []int //creating slice values = append(values,10) //fill the elements in slice using append function values = append(values, 8) values = append(values, 20) values = append(values, 4) values = append(values, 56) fmt.Println("The slice containing the values is:", values) min, max := minandmax(values) fmt.Println("Minimum element in the slice is:", min) //print min element fmt.Println("Maximum element in the slice is:", max) //print max element } func minandmax(values []int) (int, int) { min := values[0] //assign the first element equal to min max := values[0] //assign the first element equal to max for _, number := range values { if number < min { min = number } if number > max { max = number } } return min, max }
输出
The slice containing the values is: [10 8 20 4 56] Minimum element in the slice is: 4 Maximum element in the slice is: 56
方法二:使用内置函数 `sort`
在此方法中,我们将学习如何使用内置函数 `sort` 从切片中查找最大和最小元素。让我们通过算法和代码了解如何执行此示例。
语法
sort.Ints(slice)
Go 语言中的 `sort` 函数用于对切片中的元素进行排序。它用于对字符串、整数和浮点值进行排序。它按升序对值进行排序,并将切片作为参数。
算法
步骤 1 − 创建一个 `main` 包,并在程序中声明 `fmt`(格式化包),其中 `main` 生成可执行代码,`fmt` 帮助格式化输入和输出。
步骤 2 − 除了这些包之外,还在程序中导入 `sort` 包以查找最小和最大元素。
步骤 3 − 创建一个 `main` 函数,并在该函数中创建一个包含一些值的切片。
步骤 4 − 使用 `sort` 函数对切片进行排序,使用此函数后,我们将获得最小和最大元素。
步骤 5 − 使用 `fmt.Println()` 函数打印最小和最大元素,其中 `ln` 指的是换行符。
示例
使用内置函数 `sort` 从切片中获取最大和最小元素的 Go 语言程序
package main import ( "fmt" "sort" ) func main() { values := []int{10, 8, 43, 52, 98} // create slice fmt.Println("The values in slice are:", values) sort.Ints(values) // sort the values finding min and max element fmt.Println("Minimum value in the slice is:", values[0]) //print min element fmt.Println("Maximum value in the slice is:", values[len(values)-1]) //print max element }
输出
The values in slice are: [10 8 43 52 98] Minimum value in the slice is: 8 Maximum value in the slice is: 98
结论
我们使用两种方法执行了查找切片中最小和最大元素的程序。在第一种方法中,我们使用外部函数从切片中查找元素;在第二种方法中,我们使用 `sort` 函数打印最大和最小元素。