# 函数
# 定义
package main | |
import "fmt" | |
func sum(x int, y int) int { | |
return x + y | |
} | |
func main() { | |
var a, b int | |
fmt.Scanln(&a, &b) | |
fmt.Println(sum(a, b)) | |
} |
go 语言函数的定义格式如下:
func funcName(param type) returnType { | |
code | |
} |
func
为关键字,go 语言中使用 func 定义函数
funcName
为函数名,推荐使用小驼峰写法 (下文介绍)
param
为参数名称, type
为参数类型
returnType
为函数返回值,不返回可以不写
code
为代码块
smallFontOutput 就是小驼峰写法,即为首字母小写,其他单词的首字母大写
如果需要多个参数,把参数写为 param type, param type
即可
go 语言可以返回多个变量,如下:
package main | |
import "fmt" | |
func swap(a string, b string) (string, string) { | |
return b, a | |
} | |
func main() { | |
var a, b = "hello", "world" | |
fmt.Println(swap(a, b)) | |
} |
# 变量作用域
package main | |
import "fmt" | |
// 这里不可以用 c | |
func demo() { | |
var c = 1 | |
fmt.Println(c) | |
// 这里可以用 c | |
} | |
// 这里不可以用 c |
这里的 c 就是局部变量,仅在函数内可用
package main | |
import "fmt" | |
var c = 1 | |
func demo() { | |
fmt.Println(c) | |
} | |
// 所有地方都可以用 |
这里的 c 是全局变量,整个文件内可用
闭包在后面会提及
# defer 语句
Go 语言中的 defer 语句会将语句推迟到函数退出时执行
package main | |
import "fmt" | |
func main() { | |
fmt.Println("start") | |
defer fmt.Println(1) | |
fmt.Println("end") | |
} |
输出结果:
start | |
end | |
1 |