当前位置: 首页 > article >正文

Go入门之函数

func subn1(x, y int) int {
	sub := x - y
	return sub
}

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

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

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

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

返回值命名法

func calc1(x, y int) (sum int, sub int) {
	sum = x + y
	sub = x - y
	return
}

自定义函数类型

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))

	
}

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

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)
}

匿名自执行函数

var fn = func(x, y int) int {
		return x * y
	}
	fmt.Println(fn(2, 3)) 

也可以接收参数

func(x, y int) {
		fmt.Println(x + y)
	}(10, 20)

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

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

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

func f() {
	defer func() {
		err := recover()
		if err != nil {
			fmt.Println(err)
		}
	}()
	panic("异常")
}


http://www.kler.cn/a/553560.html

相关文章:

  • 高并发系统架构设计全链路指南
  • 自制AirTag,支持安卓/鸿蒙/PC/Home Assistant,无需拥有iPhone
  • 应用程序中的网络协议:原理、应用与挑战
  • Java 大视界 -- 企业数字化转型中的 Java 大数据战略与实践(93)
  • 什么是网关,网关的作用是什么?网络安全零基础入门到精通实战教程!
  • 当Qt遇见IOCP:用C++打造高并发服务器
  • 【物种分布】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作
  • 51单片机学习之旅——在LCD1602上显示时钟
  • FPGA实现GTY光口视频转USB3.0传输,基于FT601+Aurora 8b/10b编解码架构,提供2套工程源码和技术支持
  • DeepSeek-R1:通过强化学习激励大型语言模型的推理能力
  • javaSE学习笔记22-线程(thread)-线程通信、线程池
  • 应用接入gpt
  • React之旅-01 初识
  • windows使用clion运行lua文件,并且使用cjson
  • 【etcd】etcd_go操作与etcd锁实现原理
  • 通过例子学 rust 个人精简版 3-1
  • 【系统架构】分布式事务模型详解
  • 配置终端代理
  • 精准医疗的“柔性”助力:FPC在医疗机器人中的应用实例【新立电子】
  • 启元世界(Inspir.ai)技术浅析(七):AI Beings 平台