多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] 函数参数分为 `形式参数` 和 `实际参数` > 形式参数:定义函数时,用于接收外部传入的数据,叫做形式参数,简称形参。 > 实际参数:调用函数时,传给形参的实际的数据,叫做实际参数,简称实参。 ## 引入 上一章 [函数定义和调用](./funcDefAndCall.md) ,有打印 9x9乘法口诀表 的函数。功能是实现到了,但是可玩性稍微差些。只能固定打印9x9的。现在需求是输入一个参数,打印对应行跟列的乘法口诀表。请参考以下代码... ```go /* 自定义乘法口诀表行数 示例:打印 6x6 乘法口诀表,multTable(6) */ func multTable(num int) { for i := 1; i < num+1; i++ { for j := 1; j < num+1; j++ { if j <= i { fmt.Printf("%dx%d=%-2d ", i, j, i*j) } else { break } } fmt.Println("") } } func main() { multTable(6) } ``` ## 位置参数 参数不同类型数据,则需要写全参数数据类型 ```go /* 自我介绍模板 需要传递两个参数。第一个参数是名字,第二个参数是年龄 */ func introduceTemplate(name string, age int) { fmt.Printf("我叫%s, 今年%d岁啦!\n", name, age) } func main() { introduceTemplate("jiaxzeng", 18) } ``` 多个参数数据类型都是相同的话,前面的参数类型可以省略不写。 ```go /* 两数之间的累加和 调用的时候,需要传两个参数。将两数之间的数相加并输出。例如:twoNumAddUp(1, 100) 和 twoNumAddUp(100, 1),结果都是5050 */ func twoNumAddUp(num1, num2 int) { sum := 0 if num1 < num2 { for i := num1; i <= num2; i++ { sum += i } } else { for i := num1; i >= num2; i-- { sum += i } } fmt.Printf("sum: %v\n", sum) } func main() { twoNumAddUp(10, 1) } ``` ## 可变长参数 可变长的参数,本质是使用切片接收剩下同类型的所有数据。 >[info] 注意:可变长参数只能放在参数最后一个,且一个函数只能存在一个可变长参数。 ```go /* 多个数累计和 传任何个整型数字,将所有数字累加并输出结果。 */ func allNumAdd(nums ...int) { // fmt.Printf("type: %T\n", nums) // type: []int sum := 0 for _, num := range nums { sum += num } fmt.Printf("sum: %v\n", sum) } func main() { allNumAdd(13, 23, 35, 74, 42) } ```