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("异常")
}
相关推荐
2401_8384725121 小时前
C++模拟器开发实践
开发语言·c++·算法
s1hiyu21 小时前
实时控制系统验证
开发语言·c++·算法
daad77721 小时前
V4L2_mipi-csi
算法
2301_7657031421 小时前
C++代码复杂度控制
开发语言·c++·算法
m0_7088309621 小时前
C++中的享元模式实战
开发语言·c++·算法
naruto_lnq1 天前
分布式计算C++库
开发语言·c++·算法
m0_706653231 天前
模板编译期排序算法
开发语言·c++·算法
历程里程碑1 天前
Linxu14 进程一
linux·c语言·开发语言·数据结构·c++·笔记·算法
木井巳1 天前
【递归算法】验证二叉搜索树
java·算法·leetcode·深度优先·剪枝
m0_561359671 天前
嵌入式C++加密库
开发语言·c++·算法