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("异常")
}
相关推荐
烁3472 小时前
每日一题(小白)模拟娱乐篇13
java·算法·娱乐·暴力
烁3472 小时前
每日一题(小白)模拟娱乐篇14
java·开发语言·算法·娱乐·暴力
Brookty2 小时前
【算法】插入排序
数据结构·算法·排序算法
GISer_Jing5 小时前
前端算法实战:大小堆原理与应用详解(React中优先队列实现|求前K个最大数/高频元素)
前端·算法·react.js
小森77676 小时前
(三)机器学习---线性回归及其Python实现
人工智能·python·算法·机器学习·回归·线性回归
振鹏Dong7 小时前
超大规模数据场景(思路)——面试高频算法题目
算法·面试
uhakadotcom7 小时前
Python 与 ClickHouse Connect 集成:基础知识和实践
算法·面试·github
uhakadotcom7 小时前
Python 量化计算入门:基础库和实用案例
后端·算法·面试
uhakadotcom7 小时前
使用 Python 与 BigQuery 进行交互:基础知识与实践
算法·面试
uhakadotcom7 小时前
使用 Hadoop MapReduce 和 Bigtable 进行单词统计
算法·面试·github