首页 > 编程笔记 > Go语言笔记 阅读:7

Go语言中的形参和实参(附带实例)

没有参数的函数使用起来不够灵活。为了向函数中传递不同的值,Go语言支持在定义函数时设置函数的参数。在调用函数时,通过参数将值传递给函数。

在定义函数时指定的参数是形式参数,简称形参;在调用函数时实际传递的值是实际参数,简称实参。

在定义函数时,在函数名后面的小括号中可以指定一个或多个参数,多个参数之间用逗号“,”分隔。指定参数的作用在于为被调用的函数传递一个或多个值。

如果定义的函数有参数,那么调用该函数的语法格式如下:
函数名(实参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
正常范围,注意保持

相关文章