上一篇学习了 Go 循环结构,这一篇学习函数。
函数是结构化编程的最小单元,同时也是程序代码复用的最小单元。函数被设计成相对独立,通过接受输入参数执行一系列指令,输出或存储相关结果。
在 Go 中使用关键字 func 定义函数。函数命名包精简短小,可以通过函数名称知道该函数的作用。
package main
import "fmt"
func main() {
add(1, 2)
}
func add(x int, y int) {
fmt.Println(x + y)
}
上面的程序片段,定义了一个 add 函数,并接受两个参数。通过函数名称可以想到该函数的作用应该是将两个数相加。
如果函数有返回值,必须有明确的 return 终止语句。如果函数中有分支结构,则每种分支情况都必须有明确的 return 终止语句。函数执行一系列指令后返回相应的结果。
package main
import "fmt"
func main() {
sum := add(1, 2)
fmt.Println(sum)
}
func add(x int, y int) int {
return x + y
}
上面的程序片段,同样定义了一个 add 函数,不同的是该函数会返回一个 int 类型的结果。
package main
import "fmt"
func main() {
sum := add(1, 2)
fmt.Println(sum)
}
func add(x int, y int) int {
sum := x + y
if sum < 100 {
return sum
} else {
sum := 100
}
}
上面的程序片段,编译时会报错。因为 add 函数是要有返回值的,当执行到 else 分支代码块中时,没有明确的返回值,所以会编译不通过。
函数的职责要尽量单一。一个函数只负责一件事,这样后期维护也相较容易的多。