go基础_函数
函数的基本写法
- func add(a int, b int) int {
- return a + b
- }
如果2个参数的类型一样,可以简写为
- func add(a, b int) int {
- return a + b
- }
多个返回值
- func add_substract(a int, b int) (int, int) {
- return a + b, a - b
- }
忽略多个返回值中的某一个
- func add_substract(a, b int) (int, int) {
- return a + b, a - b
- }
- n1, _ := add_substract(3, 4)
定义函数类型
- func add(a int, b int) int {
- return a + b
- }
- func sub(a, b int) int {
- return a - b
- }
- type Cal func(int, int) int
- func do(f Cal, a, b int) int {
- return f(a, b)
- }
- func main() {
- n1 := do(add, 3, 5)
- n2 := do(sub, 5, 3)
- fmt.Println("n1 =", n1)
- fmt.Println("n2 =", n2)
- }
不定参数的场景
不定参数函数的形参可以为不定参数,或者为切片。
但是这是2种不同的函数类型。
- func get_sum(data ...int) {
- sum := 0
- for _, v := range data {
- sum += v
- }
- fmt.Println(sum)
- return
- }
- func main() {
- fmt.Println("Hello World!")
- get_sum(1, 2, 3)
- slice := make([]int, 3)
- slice[0] = 1
- slice[1] = 2
- get_sum(slice...)
- }
运行结果
- Hello World!
- 6
- 3
- 成功: 进程退出代码 0.
defer函数
defer函数的主要作用为了保证资源的回收和释放。
当defer函数放在return之后时,不会被执行。
当defer函数所在的程序调用了os.Exit(),不管是Exit(0),Exit(1),defer都不会被执行。
defer函数后面的()里面是为了放实参的。
- func main() {
- fmt.Println("Hello World!")
- defer func(x int) {
- fmt.Println("defer x=", x)
- }(1)
- fmt.Println("test end")
- // os.Exit(0)
- os.Exit(1)
- }
运行结果
- Hello World!
- test end
- exit status 1
- 错误: 进程退出代码 1.
多个defer函数放在一起,最后的defer先执行。(defer充分贯彻落实FILO)
go基础_函数的更多相关文章
- JS基础_函数的简介
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- php基础_函数和类
①函数 1.函数名不区分大小写,变量名区分大小写. 2.require()和include() 区别:函数加载失败后,require给出一个致命错误,include只是一个警告. ②类 1.构造方法 ...
- Python基础_函数闭包、调用、递归
这节的主要内容是函数的几个用法闭包,调用.递归. 一.函数闭包 对闭包更好的理解请看:https://www.cnblogs.com/Lin-Yi/p/7305364.html 我们来看一个简单的例子 ...
- Python基础_函数2
在介绍完函数的大体概念如定义.传参.作用域之后,本节主要介绍函数的几个细节部分. 一. print()函数与return的区别. 相同点:print与return都是向用户在输出界面上展示结果 不同点 ...
- 14.Java基础_函数/函数重载/参数传递
Java函数和函数重载 /* 函数定义: public static 返回类型 func(参数){ 方法体: } 函数重载 在调用时,Java虚拟机会通过参数的不同来区分同名的函数 满足: 1.多个函 ...
- JS基础_函数作用域
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JS基础_函数的返回值
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- JS基础_函数的参数
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JS基础_函数作用域练习
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
随机推荐
- linux - 从网上下载文件到服务器
命令格式 wget URL地址 实例 wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86 ...
- js及jsp.java查错的几种方式
一.js 1.console.log("你想输出的内容"); 2.alert("你想输出的内容"); 3.debugger;(记得打开F12) 4.快速找到js ...
- sql语言分类及区别、显示和隐示提交的指令
SQL的发展是从1974年开始的,其发展过程如下: 1974年-----由Boyce和Chamberlin提出,当时称SEQUEL. 1976年-----IBM公司的Sanjase研究所在研制RDBM ...
- 清理 /dev/vda1 系统磁盘
df-h检查一台服务器磁盘使用空间,发现磁盘已经使用了100% 思路是: 1.cd /usr 2.du -sh * 看哪个目录占用空间大 3.重复前两步,根据实际情况删除或者移走 4.日志的话可以运行 ...
- LaTeX竖立公式符号
1.LaTeX技巧668:LaTeX如何实现直立积分号 \usepackage{amsmath,amssymb} \DeclareSymbolFont{EulerExtension}{U}{euex} ...
- orcad常用库文件
ORCAD CAPTURE元件库介绍 AMPLIFIER.OLB amplifier 共182个零件,存放模拟放大器IC,如CA3280,TL027C,EL4093等. ARITHMETIC.OLB ...
- 创建本地yum源仓库
更新本地yum源 yum仓库服务端配置如下 : 1. 创建yum仓库目录 mkdir -p /data/yum_data/ cd /data/yum_data/ #可以上传rpm包到此目录,此目录下面 ...
- JS高级---一个神奇的原型链
一个神奇的原型链 <script> var divObj=document.getElementById("dv"); console.dir(divObj); //d ...
- python之路之css
方式三 方式四 <style type="text/css"> a:link{ color: red; } a:visited { color: blue; } a:h ...
- Mybaits(11)延迟加载
一.概述 1.概念 就是在需要用到数据时才去进行加载,不需要用的数据就不加载数据.延迟加载也称为懒加载. 2.优缺点 优点:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要 ...