go基础_函数
2024-09-27 05:10:20
函数的基本写法
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)
最新文章
- 使用Docker搭建Java Web运行环境
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理6
- 面向对象cookie增删查
- Codeforces Round #200 (Div. 2) E. Read Time(二分)
- 捉BUG记(To Catch a Bug)
- Golang学习 - io 包
- 引用自定义的framework
- 山东省2016acm省赛
- SharePoint2010添加webpart找不到内容编辑器
- HDU 3639 Hawk-and-Chicken(良好的沟通)
- HDU 5613 Baby Ming and Binary image
- 安卓模拟器tools修改
- Jmeter - foreach控制器之嵌套使用
- Bootstrap3 排版-地址
- 回忆曾经的SSM框架实现文件上传
- svg标签
- Beego开源项目 收藏
- 使用 MVVMLight 命令绑定(转)
- struts系列:返回json格式的响应
- Network---3694poj(桥与LCA)