Go-passing-arrays-to-functions
提供:Dev Guides
Go-配列を関数に渡す
1次元配列を関数の引数として渡したい場合、次の2つの方法のいずれかで関数仮パラメーターを宣言する必要があり、2つの宣言メソッドはすべて、コンパイラーに整数配列が行くことを伝えるため、同様の結果を生成します受信する。 同様に、多次元配列を仮パラメータとして渡すことができます。
Way-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は仮パラメーターの境界チェックを実行しないため、関数に関する限り、配列の長さは重要ではありません。