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は仮パラメーターの境界チェックを実行しないため、関数に関する限り、配列の長さは重要ではありません。