厚土Go学习笔记 | 05. 函数
时间:2022-05-06
本文章向大家介绍厚土Go学习笔记 | 05. 函数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
函数可以没有参数,也可以有多个参数。
package main
import(
"fmt"
)
//有两个参数的函数
func add(x,y int) int {
return x + y
}
//没有参数的函数
func isay() string{
return "I say the number is"
}
//主函数
func main(){
fmt.Println(isay(), add(2, 5))
}
是不是奇怪add函数的参数的写法?
你没看错,Go语言可以这样写。如果多个参数都是同一个数据类型的话,前面的参数可以略写数据类型,只要最后一个写类型就可以了。
(x int, y int)
等同于(x,y int)
【注意】Go语言里,数据类型都写在变量名之后。
Go语言里,函数还可以有任意数量的返回值,这给程序设计提供了很大的便利。
package main
import(
"fmt"
)
//有两个参数的函数
func add(x,y int) int {
return x + y
}
//没有参数的函数
func isay() string{
return "I say the number is"
}
//多个返回值的函数
func swap(x,y string) (string, string, string) {
return y, x, "!!!"
}
func main(){
fmt.Println(isay(), add(2, 5))
fmt.Println(swap("world", "Hello"))
}
新增加的swap函数返回了三个字符串,不但交换了参数的顺序,还给出了一个"!!!"的返回值。
函数还可以“命名返回值”,这样的写法,在return后可以不写任何代码。函数体如下:
func split(sum int) (x,y int) {
x = sum * 4 / 9
y = sum - x
return
}
这样没有参数的return,返回各个返回变量的当前值。这种用法被称为“裸”返回。
【注意】这样的用法最好只在较短的函数体使用。长的函数会影响代码的可读性。返回值的名称,应当具有一定的意义,可增加代码的可读性。
完整代码
package main
import(
"fmt"
)
//有两个参数的函数
func add(x,y int) int {
return x + y
}
//没有参数的函数
func isay() string{
return "I say the number is"
}
//多个返回值的函数
func swap(x,y string) (string, string, string) {
return y, x, "!!!"
}
//命名返回值
func split(sum int) (x,y int) {
x = sum * 4 / 9
y = sum - x
return
}
func main(){
fmt.Println(isay(), add(2, 5))
fmt.Println(swap("world", "Hello"))
fmt.Println(split(197))
}
- Gershon Dublon & Nan Zhao:用传感器网络感知世界
- 即日起珠海可用微信乘公交,腾讯乘车码助力智慧城市建设
- 利用mk-table-checksum监测Mysql主从数据一致性操作记录
- mysql主从同步(4)-Slave延迟状态监控
- 浏览器窗口尺寸改变时的图片自动重新定位
- Mongodb主从复制/ 副本集/分片集群介绍
- Paul-Adrien Menez:互联网与抵制食物浪费的故事
- DRBD详细解说及配置过程记录
- Servant:基于Web的IIS管理工具
- Web前端知识体系精简——CSS 篇
- 几种异步操作方式
- 今天的面试小记
- objective-C中的序列化(serialize)与反序列化(deserialize)
- 微信小程序 template 模板功能实现循环
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 部署Python应用
- 重写ThreadPoolTaskExecutor
- 聊聊dubbo-go的forkingCluster
- 创建多线程的4种方式
- 线程通讯wait¬ify
- 最新深度学习框架——OneFlow:新分布式训练(附源代码)
- 多线程相关概念
- MySQL安装教程
- MapReduce之自定义OutputFormat
- 在TensorFlow中使用模型剪枝将机器学习模型变得更小
- 干货 | 滴滴 数据分析原来是这样做的!
- 数据链路层之PPP协议
- matplotlib基础绘图命令之boxplot
- MapReduce之GroupingComparator分组(辅助排序、二次排序)
- MySQL优化--概述以及索引优化分析