Go入门之函数

Go 复制代码
func subn1(x, y int) int {
	sub := x - y
	return sub
}

函数参数简写,可以省略前边的,和后边的类型一样

Go 复制代码
func addn1(x ...int) int {
	sum := 0
	for _, v := range x {
		sum += v
	}
	return sum
}

求可变参数的核,表示传参的个数不确定

Go 复制代码
func addn1(x int, y ...int) int {
	sum := 0
	for _, v := range y {
		sum += v
	}
	x=sum
	return x
}

返回值命名法

Go 复制代码
func calc1(x, y int) (sum int, sub int) {
	sum = x + y
	sub = x - y
	return
}

自定义函数类型

Go 复制代码
func add(x, y int) int {
	return x + y
}


func main() {
	var c calc
	c = add
	fmt.Printf("%T\n", c)
	fmt.Println(c(10, 5))

	
}

函数作为另一个函数的参数并且函数作为返回值

Go 复制代码
func add(x, y int) int {
	return x + y
}

type calcType func(int, int) int

func calc1(x, y int, cb calcType) int {
	return cb(x, y)
}
func main() {

	sum := calc1(5, 10, add)
	fmt.Println(sum)
}

匿名自执行函数

Go 复制代码
var fn = func(x, y int) int {
		return x * y
	}
	fmt.Println(fn(2, 3)) 

也可以接收参数

Go 复制代码
func(x, y int) {
		fmt.Println(x + y)
	}(10, 20)

函数的闭包,函数里面嵌套一个函数,最后返回里面的函数。可以作用局部变量常驻内存,不污染全局

********************

defer 延迟执行改语句 panic抛出一个异常 ,recover接异常 必须在defer中

Go 复制代码
func f() {
	defer func() {
		err := recover()
		if err != nil {
			fmt.Println(err)
		}
	}()
	panic("异常")
}
相关推荐
晚风醉蝶19 小时前
1-16-计数排序-CountingSort
python·算法·排序算法
疯狂打码的少年19 小时前
【数据结构】排序算法:归并排序与基数排序
数据结构·笔记·算法·排序算法
吃旺旺雪饼的小男孩20 小时前
U-Net 语义分割详解:原论文、PyTorch 实现与真实消融实
人工智能·pytorch·python·算法
lucas_AI20 小时前
35 种开源文档抽取配置,只有 4 个跨过 F1 0.5
人工智能·算法·llm
练习时长一年的RL研究者20 小时前
与AI对话后对 Actor-Critic 中 TD Target 的 a‘ 来源总结
算法
大熊背20 小时前
ISP图像处理中大数乘法溢出处理(二)
算法·大数乘法
roman_日积跬步-终至千里20 小时前
【算法3】二叉树中的最大路径和
算法
XUEYUAN521221 小时前
IP 池调度算法实战:代理池负载均衡、健康检查与失效剔除机制(2026)
tcp/ip·算法·负载均衡
无小道21 小时前
算法——问题转化
算法
evans在进步21 小时前
LeetCode 53 最大子数组和:一次遍历掌握 Kadane 算法
算法·leetcode·职场和发展