如何在Go语言中向函数传递数组?


在编程中,为了使代码更模块化、更易用和更易读,我们将代码分解成不同的函数。例如,我们需要对一组数字进行排序,为此我们将创建一个单独的函数。为此,我们使用了一种称为数组的数据结构,它只不过是多个相同类型值的集合。一旦数字数组被排序,在函数结束时,我们需要返回排序后的元素,所以在本文中,我们将了解如何返回数组。

语法

声明一个以数组作为参数的函数的语法是:

func functionName(arrayVariableName [sizeOfArray]datatype) returnType {
	// logic
}	

算法

  • 步骤 1: var array [2]string − 声明一个大小为 2 的字符串类型数组。

  • 步骤 2: array[0] = “John” − 初始化数组的两个索引。

  • 步骤 3: printInAlphabeticalorder(array) − 调用我们传递数组作为参数的函数。

    • if strings.Compare(array[0], array[1]) == 1 {} − 开始if条件以比较两个字符串并在if else条件中打印它们。

  • 步骤 4: 在被调用的函数中按字母顺序打印结果。

示例

在这个例子中,我们将创建一个大小为两个、数据类型为字符串的数组,然后通过将数组传递给函数,按字母顺序打印该数组中的字符串。

package main

import (
    // fmt package provides the function to print anything
    "fmt"
    // strings package has functions related to string
    "strings"
)

// array is the argument in this function
func printInAlphabeticalorder(array [2]string) {
    fmt.Println("Printing strings in alphabetical order.")

    // comparing both the string and printing the
    // one first that comes first in alphabetical order
    if strings.Compare(array[0], array[1]) == 1 {
        fmt.Printf("%s %s\n", array[0], array[1])
    } else {
        fmt.Printf("%s %s\n", array[1], array[0])
    }

}

func main() {
    // declaring the array of type string with size 5
    var array [2]string

    // initializing all the indexes of an array
    array[0] = "John"
    array[1] = "Andrew"

    fmt.Println("Golang program to pass array in an argument.")
    // passing argument in the function
    printInAlphabeticalorder(array)

}

输出

Golang program to pass array in an argument.
Printing strings in alphabetical order.
John Andrew

算法

  • 步骤 1: var array [5]int − 声明一个大小为 5 的整数类型数组。

  • 步骤 2: array[0] = 5 ….− 初始化数组的所有索引。

  • 步骤 3: printInSumOfArray(array) − 调用将数组作为参数传递的函数。

    • var sum int / sum = 0 − 该函数首先初始化并声明该数字。

    • for i := 0; i < len(array); i++ { } − 运行循环以查找数组中所有数字的总和。

  • 步骤 4: 在被调用的函数中按字母顺序打印结果。

示例

在这个例子中,我们将创建一个大小为 5、数据类型为 int 的数组,然后通过将数组传递给函数来查找数组中所有数字的总和。

package main

import (
    // fmt package provides the function to print anything
    "fmt"
)

// array is the argument in this function
func printInSumOfArray(array [5]int) {
    fmt.Println("Printing the sum of all the numbers in the array.")
    // declaring the variable sum of int type int to store the sum
    // of all the numbers in the array
    var sum int

    // initializing the variable sum with 0
    sum = 0

    // running a for loop over the array
    for i := 0; i < len(array); i++ {
        // adding current index number of array in sum
        sum = sum + array[i]
    }

    fmt.Printf("The sum of all the numbers in the array is %d.\n", sum)
}

func main() {
    // declaring the array of type string with size 5
    var array [5]int

    // initializing all the indexes of an array
    array[0] = 5
    array[1] = 59
    array[2] = 43
    array[3] = 12
    array[4] = 98

    fmt.Println("Golang program to pass array in argument.")
    // passing argument in the function
    printInSumOfArray(array)

}

输出

Golang program to pass array in an argument.
Printing the sum of all the numbers in the array.
The sum of all the numbers in the array is 217.

结论

这两个例子展示了如何将数组传递给函数,第一个例子中我们传递了一个字符串类型的数组并按字母顺序打印值,第二个例子中我们传递了一个整数类型的数组并打印了数组中所有数字的总和。要了解更多关于 Go 的知识,您可以浏览这些教程

更新于: 2023年7月10日

1K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告