Golang程序 寻找切片中最大的元素

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