- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
4.3函数的参数传递
4.3函数的参数传递函数如果使用参数,该参数变量称为函数的形参。形参就像定义在函数体内的局部变量。调用函数,可以通过两种方式来传递参数。即:值传递和引用传递,或者叫做传值和传引用。
4.3函数的参数传递4.3.1值传递值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到原内容数据。默认情况下,Go语言使用的是值传递,即在调用过程中不会影响到原内容数据。每次调用函数,都将实参复制一份再传递到函数中。每次都复制一份,性能会下降,但是Go语言中使用指针和值传递配合就避免了性能降低问题,也就是通过传指针参数来解决实参拷贝的问题。
4.3函数的参数传递4.3.2引用传递引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到原内容数据。严格来说Go语言只有值传递这一种传参方式,Go语言是没有引用传递的。Go语言中可以借助传指针来实现引用传递的效果。函数参数使用指针参数,传参的时候其实复制一份指针参数,也就是复制了一份变量地址。函数的参数如果是指针,当函数调用时,虽然参数仍然是按复制传递的,但是此时仅仅只是复制一个指针,也就是一个内存地址,这样就不用担心实参复制造成的内存浪费、时间开销、性能降低的情况。
4.3函数的参数传递4.3.2引用传递引用传递的作用如下。传指针使得多个函数能操作同一个对象。传指针更轻量级(8bytes),只需要传内存地址。如果参数是非指针参数,那么值传递的过程中,每次在复制上面就会花费相对较多的系统开销(内存和时间)。所以当要传递大的结构体的时候,用指针是一个明智的选择。Go语言中slice、map、chan类型的实现机制都是类似指针,所以可以直接传递,而不必取地址后传递指针。
4.3函数的参数传递4.3.2引用传递函数传int类型的值与引用的对比,如例所示。
4.3函数的参数传递4.3.2引用传递函数传slice类型的值与引用的对比,如例所示。
4.3函数的参数传递4.3.2引用传递函数传数组,其类型的值与引用的对比,如例所示。
4.3函数的参数传递4.3.2引用传递函数传结构体,其类型的值与引用的对比,如例所示。
4.3函数的参数传递4.3.3值传递和引用传递的注意细节Go语言中所有的传参都是值传递(传值),都是一个副本、一个复制。复制的内容有时候是值类型(int、string、bool、数组、struct属于值类型),这样就在函数中就无法修改原内容数据;有的是引用类型(指针、slice、map、chan属于引用类型),这样就可以修改原内容数据。是否可以修改原内容数据,和传值、传引用没有必然的关系。在C++中,传引用肯定是可以修改原内容数据的,在Go语言里,虽然只有传值,但是也可以修改原内容数据,因为参数可以是引用类型。传引用和引用类型是两个概念。虽然Go语言只有传值一种方式,但是可以通过传引用类型变量达到跟传引用一样的效果。
本章详细介绍了函数和指针,函数部分包括函数的定义、函数的参数、函数的返回值、匿名函数、闭包、可变参数和递归调用。指针部分包括指针的定义、指针的使用方式、指针数组和指针的指针。最后通过案例对函数的传参方式进行对比。在实际编程时,应尽量使用函数来提高代码的复用性,对于占用内存较大的变量应尽量使用指针来减少资源的消耗。本章小结
您可能关注的文档
- 4.2.3网络适配器的工作原理讲解.pptx
- 4.2不定积分的换元积分法 (1)讲解.pptx
- 4.2局域网交换机 (1)讲解.pptx
- 4.2删除和修改数据讲解.pptx
- 4.2项目知识准备 (1)讲解.ppt
- 4.3 JMeter的目录结构 (1)讲解.pptx
- 4.3 数据链路层 (1)讲解.pptx
- 4.3.2mac地址转发表 (1)讲解.pptx
- 4.3不定积分的分部积分法 (1)讲解.pptx
- 4.3完整性约束讲解.pptx
- 2024学年第一学期浙江省精诚联盟10月联考高二物理试题含答案及解析.pdf
- 【山东卷】山东省泰安市2024-2025学年高三上学期11月期中考试(11.13-11.15)英语试卷含答案及解析.pdf
- 【浙江卷】浙江省杭州市四校联考2024-2025学年高一上学期10月月考英语试卷含答案及解析.pdf
- 西南大学附中高一10月月考生物试卷含答案及解析.pdf
- 辽宁省县域重点高中协作体2024~2025学年高一上学期10月质量监测试题历史试卷含答案及解析.pdf
- 基于多功能超疏水材料的海水淡化及油水分离研究.pdf
- FKBP5基因多态性与抚养方式对孤儿静息态脑功能的影响.pdf
- 《因明入正理论略抄及后疏》的研习与创作感受.pdf
- HIF-1α、SGK1在子宫内膜增生及子宫内膜癌孕激素抵抗中的表达和意义.pdf
- 初中信息科技大单元教学设计框架构建及应用研究--以《人工智能》大单元为例.pdf
文档评论(0)