Golang - 4 Golang 函数
4 Golang 函数
函数
函数
是将一个或者一类问题包装为一个代码块,可以被多次调用,提高代码重用性。
函数
也是一种类型
,参数和返回值都是类型的一部分,并且返回值可以是一个函数
(1)语法规则
func 函数名(参数1 类型, 参数2 类型, ...) (返回值1类型, 返回值2类型, ...) { 逻辑... return 返回值1, 返回值2, ... }
- 普通函数
// 普通函数,有参数 有返回值 func sayHello(name,sentence string) string { fmt.Printf("%s说了:%s",name,sentence) return sentence } // 调用 sayHello("duoduo","hello world!")
(2) 匿名函数
匿名函数赋值给一个变量
var a string = "duoduo" func test(b int) { var f func() int = func() int { fmt.Printf(a) return b } f() }
(3)闭包函数
定义在函数内部,对外部作用域有引用
func test1() func() { t := 10 ff := func() { fmt.Println(t) } return ff }
(4)可变长参数
可以传任意长度的int类型参数,用变量 ...类型
来接收,但是只能接收同一种类型的参数
比如:
-
int 就是切片类型
[]int
-
string 就是切片类型
[]string
// 如果是int类型,就是 func test1(a ...int) { fmt.Printf("%T", a) // []int } func test2(a ...string) { fmt.Printf("%T", a) // []string }
(5)defer延迟调用
延迟调用,当前函数所有代码都执行完了,再执行
- defer先注册后调用
var a int = 10 defer func(i int) { fmt.Println(i) defer fmt.Println("延迟调用") defer fmt.Println("1",i) fmt.Println("a1",a) i = 99 a=99 fmt.Println("a2",a) defer fmt.Println("2",i) }(a) ------------------------------------------ a1 10 a2 99 2 99 1 10 延迟调用 =========================================== defer func() { fmt.Println("b1",a) // 99 a=99 fmt.Println("b2",a) // 99 }() ------------------------------------------- b1 99 b2 99
(6)类型命名
当传入的类型比较复杂的时候,可以使用type
进行 类型命名
,简化书写
func test2 (func()) func(int, int) int { return func(a, b int) int { return a + b } } f := test2(func() {}) res :=f(10,12) fmt.Println(res) ==================简化=============== type MyFunc = func(int, int) int func test2 (func()) MyFunc { return func(a, b int) int { return a + b } }
- 注意:类型命名后,与原类型就不是同一种类型了
type NewInt = int var aa int8 = 10 var bb NewInt = 10 fmt.Println(aa+bb)
标签:
Golang
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南