最新要闻
- 全铝车身+后置后驱:奇瑞全新suv即将上市 命名“舒享家”
- 巴奴火锅称羊肉卷确实含有鸭肉成份:向顾客赔偿835.4万元!
- 机皇预定!曝华为Mate 60 Pro+明天开售:标配16GB内存 512GB起步
- “特斯拉强敌”就要来了!Lucid加快进度 计划进入中国市场
- 华为Vision智慧屏SE3正式开售:2499元起 双120Hz高刷
- 1199元 小米AR体感运动主机上架:12核双芯+超广角镜头
- 唯一的双风扇!七彩虹iGame RTX 4070 Ultra限时降价100元
- 立减70元 29.9元到手!班尼路大牌长袖卫衣大促
- 土耳其玩家暴怒!PS+订阅费用在土区暴涨近5倍
- 浙江一村庄出现上千条眼镜蛇 竟是偷偷放生:当地回应
- 如何从周四就开始过周末?
- 驾驶特斯拉撞车:林志颖称车祸后理解能力变差 脸部留疤
- 东风汽车大召回!超110万辆日产汽车被召回:一个阀门的问题
- 日系车在国内不好卖了!日产中国8月销量出炉 暴跌34%
- 中国知网作者服务平台发布试运行:作者可在线申领稿酬
- 离谱!女子胸口藏16只活蜥蜴入境被查:为印尼斑帆蜥 外来物种危害太大
手机
又是一年开学季丨无缝接驳 直通高校 武汉贴心迎新
科锐国际廖萍: 数字化人才将成为VUCA时代企业人才战略的核心
- 又是一年开学季丨无缝接驳 直通高校 武汉贴心迎新
- 科锐国际廖萍: 数字化人才将成为VUCA时代企业人才战略的核心
- 郑州地铁3号线二期通过初期运营前安全评估
- 筑牢基层安全“防火墙”盘龙区金辰街道这么做
- 中金关注政策组合拳的长期积极影响
- 军士选晋,为战选才!
家电
Go 函数
函数是一组语句,可以在程序中重复使用。函数不会在页面加载时自动执行。函数将通过调用函数来执行。
创建函数
要创建(通常称为声明)一个函数,请执行以下操作:
- 使用
func
关键字。 - 指定函数的名称,后跟括号
()
。 - 最后,在花括号
{}
内添加定义函数应执行的代码。
语法
【资料图】
func 函数名() { // 要执行的代码}
调用函数
函数不会立即执行。它们被“保存以供以后使用”,并在调用时执行。
在下面的示例中,我们创建了一个名为 "myMessage()" 的函数。开括号 {
表示函数代码的开始,闭括号 }
表示函数的结束。该函数输出 "I just got executed!"。要调用函数,只需写下函数的名称,后面跟着两个括号 ()
:
示例
package mainimport ( "fmt")func myMessage() { fmt.Println("I just got executed!")}func main() { myMessage() // 调用函数}
结果:
I just got executed!
一个函数可以被多次调用。
示例
package mainimport ( "fmt")func myMessage() { fmt.Println("I just got executed!")}func main() { myMessage() myMessage() myMessage()}
结果:
I just got executed!I just got executed!I just got executed!
Go函数命名规则
- 函数名必须以字母开头。
- 函数名只能包含字母数字字符和下划线(A-z,0-9 和 _)。
- 函数名区分大小写。
- 函数名不能包含空格。
- 如果函数名由多个单词组成,可以使用多词变量命名的技巧。
参数和参数值
信息可以作为参数传递给函数。参数在函数内部充当变量。
在函数名后面,括号内指定参数及其类型。您可以添加任意数量的参数,只需用逗号分隔即可:
语法
func 函数名(参数1 类型, 参数2 类型, 参数3 类型) { // 要执行的代码}
带参数的函数示例
下面的示例有一个带有一个参数 fname
(类型为字符串)的函数。当调用 familyName()
函数时,我们还传递了一个名字(例如,Liam),并且这个名字在函数内部使用,输出多个不同的名字,但相同的姓氏:
示例
package mainimport ( "fmt")func familyName(fname string) { fmt.Println("Hello", fname, "Refsnes")}func main() { familyName("Liam") familyName("Jenny") familyName("Anja")}
结果:
Hello Liam RefsnesHello Jenny RefsnesHello Anja Refsnes
注意:当将参数传递给函数时,它被称为参数。因此,从上面的示例中可以看出:fname
是参数,而Liam、Jenny 和 Anja 是参数值。
多个参数
在函数内部,您可以添加任意数量的参数:
示例
package mainimport ( "fmt")func familyName(fname string, age int) { fmt.Println("Hello", age, "岁的", fname, "Refsnes")}func main() { familyName("Liam", 3) familyName("Jenny", 14) familyName("Anja", 30)}
结果:
Hello 3 岁的 Liam RefsnesHello 14 岁的 Jenny RefsnesHello 30 岁的 Anja Refsnes
希望这些信息能帮助您理解Go语言中的函数、参数和参数值的使用方式。如果您有任何其他问题,请随时提出。
返回值
如果您想让函数返回一个值,您需要定义返回值的数据类型(如int、string等),并在函数内部使用return关键字:
语法
func 函数名(参数1 类型, 参数2 类型) 类型 { // 要执行的代码 return 输出}
函数返回示例
在下面的示例中,myFunction()
接收两个整数(x 和 y),并返回它们的加法(x + y)作为整数(int):
示例
package mainimport ( "fmt")func myFunction(x int, y int) int { return x + y}func main() { fmt.Println(myFunction(1, 2))}
结果:
3
命名返回值
在Go中,您可以为函数的返回值命名。
在这里,我们将返回值命名为 result
(类型为int),并使用“裸露”的返回(即,我们使用return语句而不指定变量名)返回值:
示例
package mainimport ( "fmt")func myFunction(x int, y int) (result int) { result = x + y return}func main() { fmt.Println(myFunction(1, 2))}
结果:
3
上面的示例也可以像这样写。在这里,return语句指定了变量名:
示例
package mainimport ( "fmt")func myFunction(x int, y int) (result int) { result = x + y return result}func main() { fmt.Println(myFunction(1, 2))}
将返回值存储在变量中
您也可以将返回值存储在变量中,像这样:
示例
package mainimport ( "fmt")func myFunction(x int, y int) (result int) { result = x + y return}func main() { total := myFunction(1, 2) fmt.Println(total)}
多个返回值
Go函数也可以返回多个值。
在这里,myFunction()
返回一个整数(result)和一个字符串(txt1):
示例
package mainimport ( "fmt")func myFunction(x int, y string) (result int, txt1 string) { result = x + x txt1 = y + " World!" return}func main() { fmt.Println(myFunction(5, "Hello"))}
结果:
10 Hello World!
在这里,我们将两个返回值存储在两个变量(a 和 b)中:
示例
package mainimport ( "fmt")func myFunction(x int, y string) (result int, txt1 string) { result = x + x txt1 = y + " World!" return}func main() { a, b := myFunction(5, "Hello") fmt.Println(a, b)}
结果:
10 Hello World!
如果由于某种原因不想使用其中一些返回的值,可以添加下划线(_)来省略这个值。
在这里,我们要省略第一个返回的值(result - 存储在变量a中):
示例
package mainimport ( "fmt")func myFunction(x int, y string) (result int, txt1 string) { result = x + x txt1 = y + " World!" return}func main() { _, b := myFunction(5, "Hello") fmt.Println(b)}
结果:
Hello World!
在这里,我们要省略第二个返回的值(txt1 - 存储在变量b中):
示例
package mainimport ( "fmt")func myFunction(x int, y string) (result int, txt1 string) { result = x + x txt1 = y + " World!" return}func main() { a, _ := myFunction(5, "Hello") fmt.Println(a)}
递归函数
Go接受递归函数。如果一个函数调用自己并达到一个停止条件,那么这个函数就是递归的。
在以下示例中,testcount()
是一个调用自己的函数。我们使用x变量作为数据,每次递归时都会增加1(x + 1)。当x变量等于11(x == 11)时,递归结束。
示例
package mainimport ( "fmt")func testcount(x int) int { if x == 11 { return 0 } fmt.Println(x) return testcount(x + 1)}func main() { testcount(1)}
结果:
12345678910
递归是一个常见的数学和编程概念。这有利于意味着您可以循环遍历数据以达到一个结果。
开发人员应谨慎使用递归函数,因为很容易陷入编写永远不会终止的函数,或者使用过多的内存或处理器资源的函数。但是,当正确编写时,递归可以是一种非常有效和数学上优雅的编程方法。
在以下示例中,factorial_recursion()
是一个调用自己的函数。我们使用x变量作为数据,每次递归时都会减小1(x - 1)。当条件不大于0时(即当它等于0时),递归结束。
示例
package mainimport ( "fmt")func factorial_recursion(x float64) (y float64) { if x > 0 { y = x * factorial_recursion(x - 1) } else { y = 1 } return}func main() { fmt.Println(factorial_recursion(4))}
结果:
24
希望这些信息对您有所帮助,帮助您理解Go语言中的返回值和递归函数的使用方式。如果您有任何其他问题,请随时提出。
最后
为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:
公众号搜索Let us Coding
,知乎,开源中国,CSDN,思否,掘金,InfoQ,简书,博客园,慕课,51CTO,helloworld,腾讯开发者社区,阿里开发者社区
看完如果觉得有帮助,欢迎点赞、收藏和关注
关键词:
Go 函数
全铝车身+后置后驱:奇瑞全新suv即将上市 命名“舒享家”
巴奴火锅称羊肉卷确实含有鸭肉成份:向顾客赔偿835.4万元!
机皇预定!曝华为Mate 60 Pro+明天开售:标配16GB内存 512GB起步
“特斯拉强敌”就要来了!Lucid加快进度 计划进入中国市场
华为Vision智慧屏SE3正式开售:2499元起 双120Hz高刷
1199元 小米AR体感运动主机上架:12核双芯+超广角镜头
唯一的双风扇!七彩虹iGame RTX 4070 Ultra限时降价100元
立减70元 29.9元到手!班尼路大牌长袖卫衣大促
土耳其玩家暴怒!PS+订阅费用在土区暴涨近5倍
浙江一村庄出现上千条眼镜蛇 竟是偷偷放生:当地回应
如何从周四就开始过周末?
驾驶特斯拉撞车:林志颖称车祸后理解能力变差 脸部留疤
东风汽车大召回!超110万辆日产汽车被召回:一个阀门的问题
高温连三月 今年或成有记录以来最热年
日系车在国内不好卖了!日产中国8月销量出炉 暴跌34%
中国知网作者服务平台发布试运行:作者可在线申领稿酬
离谱!女子胸口藏16只活蜥蜴入境被查:为印尼斑帆蜥 外来物种危害太大
EVA机甲风:361°3RX-AG1大河原邦男联名球鞋159元(门店699)
产量30年来新低!德国媒体毫不留情批评德国车企:时间不多了
项目管理流程文件,招标支撑文件,项目研发,验收等系列支撑文件
26.高并发服务器
Python名称空间和作用域,闭包函数
业务安全情报第22期 | 不法分子为何盗刷企业短信?
Induction of Design Pattern
减税降费接连出台 积极财政政策加力提效
【财经分析】多空博弈促债市继续盘整 10年期国债利率料上行“有顶”
【新华500】新华500指数(989001)7日跌1.45%
【财经分析】多空博弈促债市继续盘整 10年期国债利率料上行“有顶”
【金融街发布】外汇局:截至8月末外储规模为31601亿美元
不怕买不到首发!京东官宣可提前抢苹果iPhone新品
检测新途径!27年有望实现尿液宫颈癌HPV筛查
10岁男孩落水从山西漂到河北:仰面朝上 “教科书”式自救
美国半导体行业协会总裁:没有一个国家可以扭转芯片供应链 半导体行业需要中国
6999元最强“争气机”!华为Mate 60 Pro南糯紫图赏
沪硅产业:大基金提前终止减持股份计划
从三花猫到癌症治疗:新兴的表观遗传学有哪些机会?
广州海事局启动防热带气旋Ⅲ级响应防范“苏拉”
队报:维拉蒂接近加盟卡塔尔球队阿拉比 德拉克斯勒也可能离队
8月31日汇市观潮:欧元、英镑和澳元技术分析
AIGC说真相|那些年美国扔下的集束炸弹
福建提升防台风应急响应为Ⅱ级 启动防暴雨Ⅳ级应急响应
“谢谢警察叔叔!这是我第一次坐警车!”
跨国零售企业在华业务保持增长
杜锋:波多黎各喜欢出手三分会有长篮板 我们每个人都要努力去抢
三年级上册语文第五单元作文范文
降息了,A股却下跌了?市场在酝酿新的方向!
米干怎么吃 米干怎么吃法
卓越商企服务:主航道业务稳步增长 新赛道构建第二增长曲线
又是一年开学季丨无缝接驳 直通高校 武汉贴心迎新
小鹏最意难平旗舰SUV 新款G9谍照亮相:白内+双风冷无线充
湖南省委政法委:凝心铸魂筑牢根本 实干担当促进发展
先进数通(300541.SZ):主要业务领域,均与华为建立了深入的合作关系
梦到虫子有什么寓意(梦到虫子预示着什么)
美方无理扣留、盘查、遣返中国留学生,中方回应!
国产机器人龙头市场份额 新兴产业成为工业机器人应用新阵地
灵台县职业中等专业学校军训服、校服采购项目中标(成交)结果公告
科锐国际廖萍: 数字化人才将成为VUCA时代企业人才战略的核心
关塔那摩监狱前囚犯揭美军虐囚:放狗咬 剥夺睡眠
windows云电脑
友邦人寿加码银保业务有成效,偿付能力指标待改善
宁夏回族自治区党委原副书记、银川市委原书记姜志刚被“双开”
新突破!广州东部公铁联运枢纽首发汽车专列
直播带货的铠甲与软肋
贵州4地入选现代流通战略支点城市布局建设名单
工商银行喜结良缘金条30克价格今天多少一克(2023年08月31日)
东莞农商行上半年营收净利微增,资产质量继续保持平稳
越素越美!
衡东:800万元助学贷款助学子圆梦
做好垃圾分类,共建绿美花都
打出三张牌激发美食康养文旅消费热
正式成立!泉州市第一医院与上海九院医疗技术协作中心揭牌!
武汉市烟草局:守护成长 “未”爱护航
科创芯片ETF华安(588290)早盘震荡走强,已涨3.02%,盘中成交额破亿元
郑州地铁3号线二期通过初期运营前安全评估
筑牢基层安全“防火墙”盘龙区金辰街道这么做
椰子水价格暴涨4000%!供不应求 订单量上涨数倍
金华一批铁路相关项目有新进展
朱保全回应印力接管万科旗下商业项目进度:目前进展顺利
“共建‘一带一路’十周年:回顾与展望”国际研讨会在霍尔果斯成功举办
以系统观念深入开展主题教育
周末带孩子去哪里玩
山东高速建材集团开展生产车间 “岗位大练兵、技能大比武”活动
79平两房卧室这样设计,绝对是小户型的模仿典范!
这场“零距离”企业恳谈会越开越“有味”
自然资源部:台风“苏拉”逼近 海浪红色预警、风暴潮橙色预警
方便面、汉堡都是垃圾食品?还真不是,什么是垃圾食品呢?
云天化(600096.SH):上半年净利润26.78亿元 同比下降22.74%
20家上市车企披露半年报,超半数净利润增长
中金关注政策组合拳的长期积极影响
开学啦!
军士选晋,为战选才!
魏巍谁是最可爱的人原文选材(魏巍谁是最可爱的人原文)
深圳国际累计完成发行81亿元境内公司债券
叶公好龙的故事和寓意(叶公好龙的故事)
王梓旭加盟吉林男篮
宁夏:新型电力 减碳有利
股价暴跌44%!市值一夜蒸发6050亿元!越南造车新势力被“打回原形”?
冯磊任上海市气象局党组书记、局长
韩旭接班人确定!200多斤打内线,狂拿31分,澳大利亚没脾气