如果想傳遞一個一維陣列作為引數到一個函式中,必須宣告函式形式引數以下面兩種方式的其中一種,兩個宣告方法都產生類似的結果,因為每個方式都告訴編譯器要接收一個整數陣列。類似的方式,可以傳遞多維陣列作為形式引數。
形式引數作為一個已知大小陣列如下:
void myFunction(param [10]int)
{
.
.
.
}
形式引數作為一個未知道大小的陣列如下:
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對形式引數不執行邊界檢查。