go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 数组:向函数传递数组

Posted Locutus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 数组:向函数传递数组相关的知识,希望对你有一定的参考价值。

如果要向函数传递数组参数,你需要在函数定义时,声明形参为数组。有以下两种方式:

  • 形参设定数组长度
func MyFunction(param [10]int) {
    ...
}

示例

func TestMainSet(t *testing.T) {
	var array = []int{1, 2, 3, 4, 5}
	setArray(array) // 未定义长度的数组,只能传给不限制数组长度的函数

	var array2 = [5]int{1, 2, 3, 4, 5} // 定义了长度的数组,只能传给限制了相同数组长度的函数
	setArray2(array2)
}

func setArray2(params [5]int) {
	fmt.Printf("params array length of setArray2 is : %d", len(params))
}

  • 形参未设定数组长度
func MyFunction(param []int) {
    ...
}

GetAverage函数接收整型数组参数,另一个参数size指定了数组元素的个数

package array_test

import (
	"testing"
)

func TestFuncArray(t *testing.T) {
	var balance = []int{1000, 2, 3, 17, 50} //切片长度为5
	var avg float32

	// 切片作为参数,传递给函数
	avg = getAverage(balance, 5)

	// 格式化输出返回的平均值
	t.Logf("平均值为: %f ", avg) //
}

func GetAverage(arr []int, size int) float32 { // 输出是float32类型
	var i, sum int
	var avg float32

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

	avg = float32(sum) / float32(size) // 显式类型转换
	return avg                         // 返回变量
}

二维数组传参

package array_test

import (
	"fmt"
	"testing"
)

func prt(arr [][]float32, size int) {
	for i := 0; i < size; i++ {
		fmt.Println(arr[i][0])
	}
}

func TestMain(t *testing.T) {
	var arr = [][]float32{{-1, -2}, {-3, -4}, {-5}}
	prt(arr, 3)   
}	

以上是关于go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 数组:向函数传递数组的主要内容,如果未能解决你的问题,请参考以下文章

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 数组:一维数组

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:切片内部结构

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 数组:向函数传递数组

go语言学习笔记 — 基础 — 高级数据类型 — 派生类型:指针(pointer)数据容器函数(func)结构体(struct)通道(channel)

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:数组 vs. 切⽚

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 切片:切片的初始化声明