如果想傳遞一個一維數組作為參數到一個函數中,必須聲明函數形式參數以下面兩種方式的其中一種,兩個聲明方法都產生類似的結果,因為每個方式都告訴編譯器要接收一個整數數組。類似的方式,可以傳遞多維數組作為形式參數。
方法-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對形式參數不執行邊界檢查。