Go语言中的形参和实参(附带实例)
没有参数的函数使用起来不够灵活。为了向函数中传递不同的值,Go语言支持在定义函数时设置函数的参数。在调用函数时,通过参数将值传递给函数。
在定义函数时指定的参数是形式参数,简称形参;在调用函数时实际传递的值是实际参数,简称实参。
在定义函数时,在函数名后面的小括号中可以指定一个或多个参数,多个参数之间用逗号“,”分隔。指定参数的作用在于为被调用的函数传递一个或多个值。
如果定义的函数有参数,那么调用该函数的语法格式如下:
定义一个带有两个参数的函数,这两个参数用于指定姓名和年龄,然后输出这两个参数,代码如下:
注意,如果在定义函数时设置了多个形式参数,在调用函数时传入的实际参数需要和每个形式参数一一对应,调用顺序也必须一致。
【实例】根据身高、体重计算 BMI 指数。定义 fun_bmi() 函数,该函数包括 3 个参数,分别用于指定姓名、身高和体重,再根据公式:BMI=体重/(身高×身高)计算 BMI 指数,并输出结果,在主函数中调用两次 fun_bmi() 函数。代码如下:
在定义函数时指定的参数是形式参数,简称形参;在调用函数时实际传递的值是实际参数,简称实参。
在定义函数时,在函数名后面的小括号中可以指定一个或多个参数,多个参数之间用逗号“,”分隔。指定参数的作用在于为被调用的函数传递一个或多个值。
如果定义的函数有参数,那么调用该函数的语法格式如下:
函数名(实参1,实参2, …)在通常情况下,在定义函数时使用了多少个形参,在函数调用时就要给出多少个实参,实参之间也必须用逗号“,”分隔。
定义一个带有两个参数的函数,这两个参数用于指定姓名和年龄,然后输出这两个参数,代码如下:
package main import "fmt" func userInfo(name string, age int) { // 定义 userInfo()函数 fmt.Printf("姓名:%s 年龄:%d", name, age) } func main() { userInfo("张三", 20) // 调用 userInfo()函数并传递参数 }运行结果如下:
姓名:张三 年龄:20
在上述代码中,在定义 userInfo() 函数时设置的 name 和 age 是形式参数,而在调用 userInfo() 函数时传递的“张三”和 20 是实际参数。可以根据需要多次调用定义的函数,并传入需要的实际参数。注意,如果在定义函数时设置了多个形式参数,在调用函数时传入的实际参数需要和每个形式参数一一对应,调用顺序也必须一致。
【实例】根据身高、体重计算 BMI 指数。定义 fun_bmi() 函数,该函数包括 3 个参数,分别用于指定姓名、身高和体重,再根据公式:BMI=体重/(身高×身高)计算 BMI 指数,并输出结果,在主函数中调用两次 fun_bmi() 函数。代码如下:
package main import ( "fmt" "strconv" ) func bmi(person string, height float64, weight float64) { fmt.Printf("%s 的身高:%v 米\t体重:%v 千克\n", person, height, weight) bmi := weight / (height * height) // 计算 BMI 指数,公式为“体重/身高的平方” bmi_s := fmt.Sprintf("%.1f", bmi) //保留一位小数 bmi_f, _ := strconv.ParseFloat(bmi_s, 64) //字符串转换为浮点数 fmt.Printf("%s 的 BMI 指数为:%v\n", person, bmi_f) //输出 BMI 指数 //判断身材是否合理 if bmi_f < 18.5 { fmt.Print("您的体重过轻\n\n") } else if bmi_f >= 18.5 && bmi_f < 24.9 { fmt.Print("正常范围,注意保持\n\n") } else if bmi_f >= 24.9 && bmi_f < 29.9 { fmt.Print("您的体重过重\n\n") } else { fmt.Print("肥胖\n\n") } } func main() { fun_bmi("张三", 1.777, 57) //调用 fun_bmi()函数并传递参数 fun_bmi("李四", 1.65, 54) //调用 fun_bmi()函数并传递参数 }运行结果如下:
张三 的身高:1.77 米 体重:57 千克
张三的 BMI 指数为:18.2
您的体重过轻
李四的身高:1.65 米 体重:54 千克
李四的 BMI 指数为:19.8
正常范围,注意保持