Go 語言向函數傳遞數組

Go 語言數組Go 語言數組

如果你想向函數傳遞數組參數,你需要在函數定義時,聲明形參為數組,我們可以通過以下兩種方式來聲明:

方式一

形參設定數組大小:

void myFunction(param [10]int)
{
.
.
.
}

方式二

形參未設定數組大小:

void myFunction(param []int)
{
.
.
.
}

實例

讓我們看下以下實例,實例中函數接收整型數組參數,另一個參數指定了數組元素的個數,並返回平均值:

實例

func getAverage(arr []int, size int) 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() {
   /* 數組長度為 5 */
   var  balance = [5]int {1000, 2, 3, 17, 50}
   var avg float32

   /* 數組作為參數傳遞給函數 */
   avg = getAverage( balance, 5 ) ;

   /* 輸出返回的平均值 */
   fmt.Printf( "平均值為: %f ", avg );
}
func getAverage(arr [5]int, size int) float32 {
   var i,sum int
   var avg float32  

   for i = 0; i < size;i++ {
      sum += arr[i]
   }

   avg = float32(sum) / float32(size)

   return avg;
}

以上實例執行輸出結果為:

平均值為: 214.399994

以上實例中我們使用的形參並未設定數組大小。

浮點數計算輸出有一定的偏差,你也可以轉整型來設置精度。

實例

package main
import (
    "fmt"
)
func main() {
    a := 1.69
    b := 1.7
    c := a * b      // 結果應該是2.873
    fmt.Println(c)  // 輸出的是2.8729999999999998
}

設置固定精度:

實例

package main
import (
    "fmt"
)
func main() {
    a := 1690           // 表示1.69
    b := 1700           // 表示1.70
    c := a * b          // 結果應該是2873000表示 2.873
    fmt.Println(c)      // 內部編碼
    fmt.Println(float64(c) / 1000000) // 顯示
}

Go 語言數組Go 語言數組