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語言數組 下一篇: Go語言指針