Go语言程序:查找切片中的最大元素


在本教程中,我们将学习如何通过一些示例查找切片中的最大元素。切片就像数组一样,是一系列元素的序列。数组是固定长度的元素序列,而切片是动态数组,这意味着它的值不是固定的,可以更改。切片比数组更高效、更快,而且它们是按引用传递而不是按值传递。让我们通过示例来理解。

方法一:使用用户自定义函数和 append() 函数

在这个方法中,我们将看到如何使用一个用户自定义函数(该函数的参数为切片)来查找切片中的最大元素。输出将使用 fmt.Println() 函数打印到控制台。让我们看看代码是如何实现的。

语法

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

append 函数用于向数组切片添加值。它接受多个参数。第一个参数是要添加值的数组,后面跟着要添加的值。然后,该函数返回包含所有值的最终数组切片。

算法

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

  • 步骤 2 − 创建一个 main 函数,并在该函数中创建一个切片,并使用 append 函数向其中添加值。

  • 步骤 3 − 使用 Go 语言中的 print 语句在控制台打印切片。

  • 步骤 4 − 从 main 函数调用用户自定义函数 largest_ele,并将切片作为参数传递。

  • 步骤 5 − 在 largest_ele 函数中,将切片中的第一个元素设置为 max,这意味着第一个元素被初始化为最大元素。

  • 步骤 6 − 运行一个循环,直到切片的长度,并检查切片元素是否大于 max 元素。

  • 步骤 7 − 如果为真,则将 max 设置为切片元素,并继续执行此操作,直到找到一个最大元素。

  • 步骤 8 − 将最大元素返回到函数,此最大元素将使用 fmt.Println() 函数打印到控制台。

示例

使用用户自定义函数和 append() 函数查找切片中最大元素的 Go 语言程序

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

方法二:使用 math 函数

在本教程中,我们将使用 max 函数查找切片中的最大元素,该函数将比较循环中的元素,找出哪个是最大的。让我们来看一下,并对这个例子有一个清晰的理解。

语法

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

append 函数用于向数组切片添加值。它接受多个参数。第一个参数是要添加值的数组,后面跟着要添加的值。然后,该函数返回包含所有值的最终数组切片。

算法

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

  • 步骤 2 − 创建一个 main 函数,并在该函数中创建一个切片,并使用 append 函数向其中添加值。

  • 步骤 3 − 使用 Go 语言中的 print 语句在控制台打印切片。

  • 步骤 4 − 从 main 函数调用用户自定义函数 largest_ele,并将切片作为参数传递。

  • 步骤 5 − 在 largest_ele 函数中,将切片中的第一个元素设置为 max,这意味着第一个元素被初始化为最大元素。

  • 步骤 6 − 运行一个循环,直到切片的长度,并使用 max 函数对 max_num 变量检查切片元素是否大于 max 元素。

  • 步骤 7 − 继续执行此操作,直到找到一个最大元素。

  • 步骤 8 − 将最大元素 max_num 返回到函数,此最大元素将使用 fmt.Println() 函数打印到控制台。

示例

使用 math 函数查找切片中最大元素的 Go 语言程序

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 函数来查找切片中的最大元素。两个例子都给出了类似的输出。因此,程序成功执行。

更新于:2023年1月17日

1K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.