如何在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+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.