go语言中的return语句

目录
  • 1、基本语法和说明
  • 2、函数的递归调用
    • 2.1基本介绍
    • 2.2递归调用入门
  • 3、总结

1、基本语法和说明

在 Go 语言 中,跳转控制语句除了有 goto 、break 和 continue 之外,还可以使用 return 。如果 return 语句使用在普通的 函数 中,则表示跳出该函数,不再执行函数中 return 后面的代码,可以理解成终止函数。如果 return 语句使用在 main 函数中,表示终止 main 函数,也就是终止程序的运行。

go函数支持返回多个值,这一点是其他编程语言没有的

func  函数名(形参列表)(返回值类型列表){
​	语句
​	return返回值列表
}
  • 1、如果返回多个值是,在接受时,希望忽略某个返回值,则使用_符号占位忽略。
  • 2、如果返回值只有一个(返回值类型列表)可以不写()

案例演示:

package main
import (
	"fmt"
)
func test(n1 int){
	n1 = n1 + 1
	fmt.Println("test() n1=",n1)
}
func getSum(n1 int,n2 int) int {
	sum := n1 + n2
	fmt.Println("getSum sum=",sum)
	return sum
}
func getSumAndSub(n1 int,n2 int)(int,int){
	sum := n1 + n2
	sub := n1 - n2
	return sum,sub
}
func main(){
	n1 := 10
	test(n1)
	fmt.Println("main() n1=",n1)

	sum := getSum(10,20)
	fmt.Println("main sum = ",sum)

	res1,res2 := getSumAndSub(8,2)
	fmt.Printf("res1=%v res2=%v\n",res1,res2)

	_,res3 := getSumAndSub(3,9)
	fmt.Println("res3=",res3)
}

执行结果:

test() n1= 11
main() n1= 10
getSum sum= 30
main sum =  30
res1=10 res2=6
res3= -6

2、函数的递归调用

2.1基本介绍

一个函数在函数体内有调用了本身,称之为递归调用

2.2递归调用入门

package main
import (
	"fmt"
)
func test(n int){
	if n > 2 {
		n--
		test(n)
	}
	fmt.Println("n=",n)
}
func main() {
	test(4)
}

执行结果:

n= 2
n= 2
n= 3

3、总结

  • 1、执行一个函数时,就创建一个新的受保护的独立空间(新函数栈)
  • 2、函数的局部变量时独立的,不会相互影响。
  • 3、递归必须向退出递归的条件逼近,否则就是无限递归,死循环
  • 4、当一个函数执行完毕,或者遇到return,就会返回,遵守谁调用就将结果返回给谁,同时当函数执行完毕或返回时,改函数本身也会被系统销毁

到此这篇关于go语言中的return语句的文章就介绍到这了,更多相关go语言 return内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • IDEA连接mysql又报错!Server returns invalid timezone. Go to ''''Advanced'''' tab and set ''''serverTimezone'''' prope的问题

    前进的道路总是这么难呢,充满荆棘.咬紧牙,相信自己可以挺过去的.加油加油! 错误界面 IDEA连接mysql,地址,用户名,密码,数据库名,全都配置好了,点测试连接,咔!不成功! 界面是这样的, 翻译过来就是:服务器返回无效时区.进入"高级"选项卡,手动设置"serverTimezone"属性. 看起来是时区出了问题.时区怎么会出问题?坑真多.网上搜了各种解决办法,琳琅满目,复杂的简单的,总算是解决了! 解决方案 我的问题出在两块,第一,设置mysql的时区.第二,

  • Python Django view 两种return的实现方式

    1.使用render方法 return render(request,'index.html') 返回的页面内容是index.html的内容,但是url不变,还是原网页的url,(比如是login页面的返回方法,跳转后的url还是为login) 一刷新就返回去了 2.使用redirect方法 return redirect(request,'idnex.html') 直接跳转到index.html页面中,url为跳转后的页面url 补充知识:Django的View是如何工作的? View (视图

  • golang return省略用法说明

    golang函数如果返回值定义了变量,return后边必须跟着表达式或者值 func main() { fmt.Println("-------", test()) } func test() (n string) { n = "hello" return } 如果没有定义变量,return必须显示地返回对象 func main() { fmt.Println("-------", test()) } func test() string { n

  • C++流程控制中用于跳转的return和goto语句学习教程

    return 语句 终止函数的执行并返回对调用函数的控制(或对操作系统的控制,如果您从 main 函数转移控制).紧接在调用之后在调用函数中恢复执行. 语法 return [expression]; 备注 expression 子句(如果存在)将转换为函数声明中指定的类型,就像正在执行初始化一样.从该类型的表达式到 return 类型的函数的转换会创建临时对象. expression 子句的值将返回调用函数.如果省略该表达式,则函数的返回值是不确定的.构造函数和析构函数以及类型为 void的函数

  • go语言中的return语句

    目录 1.基本语法和说明 2.函数的递归调用 2.1基本介绍 2.2递归调用入门 3.总结 1.基本语法和说明 在 Go 语言 中,跳转控制语句除了有 goto .break 和 continue 之外,还可以使用 return .如果 return 语句使用在普通的 函数 中,则表示跳出该函数,不再执行函数中 return 后面的代码,可以理解成终止函数.如果 return 语句使用在 main 函数中,表示终止 main 函数,也就是终止程序的运行. go函数支持返回多个值,这一点是其他编程

  • C语言中的switch语句基本用法

    switch语句: 实际生活中,需要做出很多选择,大家都知道做选择可以使用if语句,但是如果选择太多,if语句使用起来就会很繁琐,这个时候就需要一个能将代码简化的语句,也就是我们今天的主角switch语句. switch语句是一个多分支选择语句,并且可以支持嵌套. switch语句的基本格式 switch(表达式) { case 常量1:语句1 case 常量2:语句2 default:语句n break; } switch语句通过将表达式的值与常量值进行比对,如果相等则执行后面的语句,如果不相

  • golang语言中for循环语句用法实例

    本文实例讲述了golang语言中for循环语句用法.分享给大家供大家参考.具体分析如下: for循环是用来遍历数组或数字的.用for循环遍历字符串时,也有 byte 和 rune 两种方式.第一种为byte,第二种rune. 复制代码 代码如下: package main import ( "fmt" ) func main() { s := "abc汉字" for i := 0; i < len(s); i++ { fmt.Printf("%c,&

  • Python语言中的if语句详情

    目录 1.简单介绍 2.if-else语句 3.用if语句来处理列表 1.简单介绍 每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试.Python 根据条件测试的值为True还是False来决定是否执行if语句中的代码.如果条件测试的值为True,Python就执行紧跟在if语句后面的代码:如果为False,Python就忽略这些代码. 要判断是否相等,我们可以使用==来进行判断: car = 'Audi' car.lower() == 'audi' 输出的结

  • 简介Go语言中的select语句的用法

    在Go编程语言中的select语句的语法如下: 复制代码 代码如下: select {     case communication clause  :        statement(s);          case communication clause  :        statement(s);     /* you can have any number of case statements */     default : /* Optional */        stat

  • 快速学习C语言中for循环语句的基本使用方法

    对于某个特定任务我们可以采用多种方法来编写程序.下面这段代码也可以实现前面的温度转换程序的功能:#include <stdio.h> /*打印华氏温度-摄氏温度对照表*/ main() { int fahr; for (fahr = 0; fahr <= 300; fahr = fahr + 20) printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32)); } 温度的下限.上限和步长都是常量, printf 函数的第三个参数必

  • R语言中if(){}else{}语句和ifelse()函数的区别详解

    首先看看定义: # if statement if(cond) expr if(cond) cons.expr else alt.expr # ifelse function ifelse(test, yes, no) 这两个函数(R语言中都是函数)相同的地方都是根据条件返回对应的值. 区别在于: if语句的条件是个TRUE/FALSE值,如果是个长度>1的逻辑向量,只判断第一个TRUE/FALSE值:而ifelse是长度任意的逻辑向量,返回根据逻辑向量对应对的yes/no值组合的新向量 ife

  • R语言中for循环的并行处理方式

    前言 本文用于记录笔者在将R语言中的for语句并行化处理中的一些问题. 实验 这里使用foreach和doParallel包提供的函数实现for语句的并行处理. for语句脚本 func <- function(x, y, z) { return(x^y/z) } # >>> main <<< x <- 2 y <- 3 z <- 1:100000 start <- (proc.time())[3][[1]] a <- 0 for (

  • Go语言中break label与goto label的区别

    与其他语言一样,Go语言也支持label(标签)语法: 分别是break label和 goto label 这样使得编程时变得异常灵活,但是由于在大项目中不好控制,所以建议能不使用goto label就不要使用 break label 和 goto label都能在循环中跳出循环,但是又有些不同之处. 首先说下break label,break的跳转标签(label)必须放在循环语句for前面,并且在break label跳出循环不再执行for循环里的代码. 当我们把标签定义在break的下面

  • Go语言中init函数和defer延迟调用关键词详解

    Go语言中init函数和defer延迟调用关键词 golang里面有两个保留函数 main 函数(只能应用于package main) init 函数(能够应用于所有的package) go程序会自动调用 init()和main() 所以你不能在任何地方调用这两个函数 package main 必须包含一个main 函数,但是每个package中的init函数都是可选的 一个package 里可以写多个init函数,建议每个包中只写一个init函数 单个包中代码执行顺序如下 main包 -->

随机推荐