【一 Go 到底】第十八天 --- 函数的注意事项
一、细节
函数的形参列表可以是多个,返回值列表也可以是多个。
形参列表和返回值列表的数据类型可以是值类型和引用类型。
函数的命名遵循标识符命名规范,首字母不能是数字,首字母大写该函数可以被本包文件和其它包文件使用,类似 public , 首字母小写,只能被本包文件使用,其它包文件不能使用,类似 private。
函数中的变量是局部的,
函数外不生效
- 请看案例1
基本数据类型和数组
默认都是值传递
的,即进行值拷贝
。在函数内修改,不会影响到原来的值
。- 请看案例2
如果希望函数内的变量能修改函数外的变量,可以传入变量的地址 &,函数内以指针的方式操作变量。从效果上看类似引用
- 请看案例 3
Go 函数不支持重载。
在 Go 中,
函数也是一种数据类型
,可以赋值给一个变量,则该变量就是一个函数类型的变量了。通过该变量可以对函数调用。- 请看案例 4
函数既然是一种数据类型,因此在 Go 中,函数可以作为形参,并且调用!
--请查看 案例 5
为了简化数据类型定义,Go 支持自定义数据类型,其基本语法为:
--请查看 案例 6
支持对函数返回值命名.
--请查看 案例 7
使用_标识符,忽略返回值。
--请查看 案例 7
Go 支持可变参数
--请查看 案例 8
二、案例解析
2.1 案例 1
在这个案例中,example()函数中的 num1 和 main 函数中的 num1 并不是同一个,example()中的 num1 是其内部的局部变量
2.2 案例 2
函数内的 num1 不会影响到 main 中 num1 的值
2.3 案例 3
先执行 main 中内容,首先会有一个 num1 中的地址;调用 example3(),其中 example3()的形参 num1 是一个指针类型,此时将 main()函数中的 num1 的地址传递进去,其 example3()的操作此时是使用的 main()函数中的 num1 的地址进行操作
2.4 案例 4
2.5 案例 5
函数既然是-种数据类型,因此在 Go 中,函数可以作为形参,并且调用
2.6 案例 6
2.7 案例 7
2.8 案例 8
编写 sum 函数,求出 1 到多个 int 的和
三、函数练习
3.1 判断代码是否正确,若正确输出什么内容
3.1.1 案例 1
3.1.2 案例 2
3.3 请编写一个函数 swap(n1 *int,n2 *int)可以交换 n1 和 n2 的值
版权声明: 本文为 InfoQ 作者【指剑】的原创文章。
原文链接:【http://xie.infoq.cn/article/b9cd3fb0d3b0a0d9b7c3e61a5】。文章转载请联系作者。
评论