Go - 向函式傳遞陣列



如果你想在函式中傳遞單維度陣列作為引數,那麼你必須以以下兩種方法之一宣告函式形式引數,這兩種宣告方法產生類似的結果,因為這兩種方法都告訴編譯器,它將接收一個整數陣列。同樣的方法你可以將多維度陣列作為形式引數傳遞。

方式 1

將形式引數宣告為如下所示的有大小的陣列 -

void myFunction(param [10]int)
{
.
.
.
}

方式 2

將形式引數宣告為如下所示的無大小的陣列 -

void myFunction(param []int)
{
.
.
.
}

示例

現在,考慮以下函式,它將採用一個數組作為引數以及另一個引數,並根據傳遞的引數,它將返回透過陣列傳遞的數字的平均值,如下所示 -

func getAverage(arr []int, int size) float32 {
   var i int
   var avg, sum float32  

   for i = 0; i < size; ++i {
      sum += arr[i]
   }

   avg = sum / size
   return avg;
}

現在,讓我們按如下所示呼叫上述函式 -

package main

import "fmt"

func main() {
   /* an int array with 5 elements */
   var  balance = []int {1000, 2, 3, 17, 50}
   var avg float32

   /* pass array as an argument */
   avg = getAverage( balance, 5 ) ;

   /* output the returned value */
   fmt.Printf( "Average value is: %f ", avg );
}
func getAverage(arr []int, size int) float32 {
   var i,sum int
   var avg float32  

   for i = 0; i < size;i++ {
      sum += arr[i]
   }

   avg = float32(sum / size)
   return avg;
}

當上述程式碼編譯在一起並執行時,它會產生以下結果 -

Average value is: 214.400000

正如你所看到的,陣列的長度與函式無關,因為 Go 不會對形式引數進行邊界檢查。

go_arrays.htm
廣告
© . All rights reserved.