函数详解、time包及日期函数
1、函数
1.1、函数定义
函数是组织好的、可重复使用的、用于执行指定任务的代码块。本文介绍了Go语言中函数的相关内容。
Go语言中支持:函数、匿名函数和闭包。
Go语言中定义函数使用 func 关键字,具体格式如下:

定义两个函数sumFn和subFn,分别对两个整数进行求和与差值。
package main
import "fmt"
func sumFn(x int, y int) int {
res := x + y
return res
}
func subFn(x int, y int) int {
res := x - y
return res
}
func main() {
res1 := sumFn(10, 2)
res2 := subFn(5, 3)
fmt.Println(res1, res2)
}

1.2、函数参数
类型简写,函数的参数中如果相邻变量的类型相同,则可以省略类型,例如:

package main
import "fmt"
func sumFn(x, y int) int {
return x + y
}
func main() {
fmt.Println(sumFn(5, 10))
}

可变参数:可变参数是指函数的参数数量不固定。Go语言中的可变参数通过在参数名后加…来标识。
注意: 可变参数通常要作为函数的最后一个参数。
package main
import "fmt"
func sumFn(x ...int) {
fmt.Printf("值: %v, 类型: %T\n", x, x)
}
func main() {
sumFn(1, 2, 3, 4, 5)
}

可以看到可变参数x的类型是切片,因此我们可以遍历切片计算出总和。
package main
import "fmt"
func sumFn(x ...int) int {
fmt.Printf("值: %v, 类型: %T\n", x, x)
sum := 0
for _, v := range x {
sum += v
}
return sum
}
func main() {
res := sumFn(1, 2, 3, 4, 5)
fmt.Println(res)
}

固定参数搭配可变参数使用如下:
package main
import "fmt"
func sumFn(x int, y ...int) int {
fmt.Printf("值: %v, 类型: %T\n", y, y)
sum := x
for _, v := range y {
sum += v
}
return sum
}
func main() {
res := sumFn(100, 1, 2, 3, 4)
fmt.Println(res)
}

1.3、函数返回值
Go语言中通过return关键字向外输出返回值。
Go语言中函数支持多返回值,函数如果有多个返回值时必须用()将所有返回值包裹起来。
例如实现一个clac函数,既计算两数之和,也计算两数之差,返回两个返回值。
package main
import "fmt"
func clac(x, y int) (int, int) {
sum := x + y
sub := x - y
return sum, sub
}
func main() {
a, b := clac(10, 2)
fmt.Println(a, b)
}

返回值命名:函数定义时可以给返回值命名,并在函数体中直接使用这些变量,最后通过return关键字返回。
package main
import "fmt"
func clac(x, y int) (sum, sub int) {
sum = x + y
sub = x - y
return
}
func main() {
a, b := clac(8, 3)
fmt.Println(a, b)
}

将之前我们写的选择排序和冒泡排序实现成一个函数:
package main
import "fmt"
func SelectSort(arr []int) {
for i := 0; i < len(arr); i++ {
for j := i + 1; j < len(arr); j++ {
if arr[i] > arr[j] {
tmp := arr[i]
arr[i] = arr[j]
arr[j] = tmp
}
}
}
}
func BubbleSort(arr []int) {
for i := 0; i < len(arr); i++ {

最低0.47元/天 解锁文章
3799





