ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] 函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果。这个结果通过 `return` 语句返回。 `return` 语句将被调用函数中的一个确定的值带回到主调函数中,供主调函数使用。函数的返回值类型是在定义函数时指定的。 `return` 语句中表达式的类型应与定义函数时指定的返回值类型一致。 ## 返回值基本使用(单个返回值) ```go func 函数名(形参 形参类型) (返回值类型) { 函数体 return 返回值 } 变量 := 函数名(实参) ``` 同样设计一个加法计算函数 ```go /* 多个数累计和 传任何个整型数字,将所有数字累加并返回累加的和 */ func allNumAddReturn(nums ...int) (int) { sum = 0 for _, num := range nums { sum += num } return sum } func main() { total := allNumAddReturn(1, 2, 3, 5) fmt.Printf("total: %v\n", total) } ``` ## 无返回值 声明函数时没有定义返回值,函数调用的结果不能作为值使用 ```go /* 打印三角形星星 传递行数,打印出对应行数的三角形星星。 */ func printTriangle(line int) { for i := 1; i <= line; i++ { // 打印空格 for j := 0; j < line-i; j++ { fmt.Printf("%s", " ") } // 打印星星 * for k := 0; k < 2*i-1; k++ { fmt.Printf("%s", "*") } fmt.Println() } } func main() { printTriangle(3) } ``` ## 返回多个值 ```go /* 登录函数 判断用户名密码是否正确,返回用户名(string)和账号密码是否匹配(bool)。 */ func login(user, passwd string) (string, bool) { if user == "jiaxzeng" && passwd == "abc" { return user, true } else { return user, false } } func main() { user, isok := login("jiaxzeng", "abc") if isok { fmt.Println(user, "登录成功") } } ``` ## 返回值命名 return 语句后面没有变量,即返回返回值命名的变量。如果函数体没有该值,返回该类型的默认值和空值。 ```go /* 两数相加 两个数相加 并 返回两数和 */ func twoNumAdd(num1, num2 int) (sum int) { sum = num1 + num2 return } func main() { sum := twoNumAdd(1, 2) fmt.Printf("sum: %v\n", sum) } ```