Go 语言向函数传递数组
Go Go教程    2019-04-29 12:14:34    20    0    0
admin   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 = []int {1000, 2, 3, 17, 50}
   var avg float32

   /* 数组作为参数传递给函数 */
   avg = getAverage( balance, 5 ) ;

   /* 输出返回的平均值 */
   fmt.Printf( "平均值为: %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) / 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) // 显示
 
---------------------------
  1. func main() {
        var array = []int{1, 2, 3, 4, 5}
        /* 未定义长度的数组只能传给不限制数组长度的函数 */
        setArray(array)
        /* 定义了长度的数组只能传给限制了相同数组长度的函数 */
        var array2 = [5]int{1, 2, 3, 4, 5}
        setArray2(array2)
    }
    
    func setArray(params []int) {
        fmt.Println("params array length of setArray is : ", len(params))
    }
    
    func setArray2(params [5]int) {
        fmt.Println("params array length of setArray2 is : ", len(params))
    }

    输出:

    params array length of setArray is 2
    params array length of setArray2 is 5

    初始化数组长度后,元素可以不进行初始化,或者不进行全部初始化,但未进行数组大小初始化的数组初始化结果元素大小就为多少。

  2.    LALALA

      xux***i@ict.ac.cn

    多维数组传参:

    package main
    
    func prt(arr [][] float32){
        for i:= 0;i < 3;i++{
            println(arr[i][0])
        }
    }
    
    func main(){
        var arr = [][]float32 {{-1,-2},{-3,-4},{-5}}
        prt(arr)
    }​
 

上一篇: Go 语言多维数组

下一篇: Go 语言指针作为函数参数

20
登录 后评论.
没有帐号? 现在注册.
0 评论
Table of content