Golang——5、函数详解、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++ {
   
   
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值