首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链基础语言——Go语言函数(上)

函数这一章节主要分为五个部分讲解,分别为:内置函数、自定义函数、变量作用域、匿名函数与闭包、递归函数。本节讲解内置函数、自定义函数和变量作用域。

1

内置函数

1.1 常见的内置函数

常见的内置函数如表1所示。

1.2 内置函数的调用过程

1.2.1 步骤

第一步:先导入该函数所在的包;

第二步:再调用,调用格式为:包名.函数名

1.2.2 示例

2

自定义函数

2.1 定义格式

注:

a. 函数是基本的代码块,用于执行一个任务。Go语言通过函数来划分任务,不同功能的函数执行的是指定的任务;

b. Go语言最少有一个main()函数;

c. 函数由关键字 func 开始声明,函数声明告诉了编译器函数的名称,返回参数和类型;

d. FuncName即函数名称,根据约定:函数名首字母小写即private,只能在本包里使用;大写即public,可以被外部包调用;

e. 返回类型:

① 上面返回值声明了两个变量名a和b(命名返回参数),变量名不是必须需要,可以只有类型没有变量名;

② 如果只有一个返回值且不声明返回值变量,可以省略变量名和返回值的括号,保留变量类型;

③ 如果没有返回值,那么就直接省略最后的返回信息。如果有返回值,那么必须在函数的内部添加return语句。

2.2 函数参数

2.2.1 参数分类

函数参数可以分为形式参数和实际参数两类,如表2所示。

函数的形参和实参具有以下特点:

a. 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。

b. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。

c. 实参和形参在数量上、类型上、顺序上应严格一致,否则会发生类型不匹配的错误。

d. 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

2.2.2 参数传递

参数传递分为值传递和引用传递,如表3所示。

值传递和引用传递的示例如下:

2.2.3 参数种类

实参可以是常量、变量、函数,也可以是数组、切片,但必须是确定的值。数组和切片在后面章节再做介绍,常量、变量在前面章节已经介绍过,这里主要介绍函数作为参数的情况:

2.3 自定义函数种类

2.3.1 无参无返值

无参无返回值就是既没有传入参数,也没有返回值。

2.3.2 有参无返回值

有参无返回值就是有传入的参数,没有返回值。

a. 普通参数列表

b. 不定参数列表

形如“… type”格式的类型只能作为函数的参数类型存在,“… type”本质上是切片。

2.3.3 无参有返回值

没有传入参数、有返回值的函数,必须有明确的终止语句,否则会引发编译错误。return 语句可以跳出当前函数。

a. 一个返回值

b. 多个返回值

2.3.4 有参与返回值

有参有返回值就是有传入的参数,有返回值。

3

变量作用域

3.1 变量作用域的分类

变量作用域指的是变量在源代码中的作用范围。根据其作用范围,分为两种:局部变量和全局变量,如表4所示。

3.2 不同作用域的同名变量的访问原则

a. 在同一个作用域内,就近访问最近的变量;

b. 如果此作用域没有此变量声明,则访问全局变量;

c. 如果全局变量也没有,则报错。

3.3 示例

参考资料

[1] https://blog.csdn.net/douyuhua0918/article/details/7452373

https://www.cnblogs.com/chase-wind/p/5635325.html

本文完,获取更多资讯,敬请关注区块链工程师。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180807G1FPZE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券