核心内容摘要
高效获取喜马拉雅音频资源:全平台兼容的音频资源管理工具解决方案
HoRain云小助手个人主页 个人专栏: 《Linux 系列教程》《c语言教程》⛺️生活的理想就是为了理想的生活!⛳️ 推荐前些天发现了一个超棒的服务器购买网站性价比超高大内存超划算忍不住分享一下给大家。
点击跳转到网站。
专栏介绍专栏名称专栏介绍《C语言》本专栏主要撰写C干货内容和编程技巧让大家从底层了解C把更多的知识由抽象到简单通俗易懂。
《网络协议》本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘一起解密网络协议在运行中协议的基本运行机制《docker容器精解篇》全面深入解析 docker 容器从基础到进阶涵盖原理、操作、
实践案例助您精通 docker。
《linux系列》本专栏主要撰写Linux干货内容从基础到进阶知识由抽象到简单通俗易懂帮你从新手小白到扫地僧。
《python 系列》本专栏着重撰写Python相关的干货内容与编程技巧助力大家从底层去认识Python将更多复杂的知识由抽象转化为简单易懂的内容。
《试题库》本专栏主要是发布一些考试和练习题库涵盖软考、HCIE、HRCE、CCNA等目录⛳️ 推荐专栏介绍Go 语言函数详解
函数声明与基本语法
参数与返回值参数特点返回值特点
函数调用规则
匿名函数与闭包
函数作为一等公民
方法与函数的区别
常见错误与
注意事项Go 语言函数详解Go 语言中的函数是核心构建块用于封装可重复使用的代码逻辑。
下面我将从基础到高级全面介绍 Go 函数。
函数声明与基本语法func 函数名(参数列表) (返回值列表) { // 函数体 }关键特点使用func关键字声明函数不是定义没有 hoisting调用前必须可见参数和返回值类型都写在变量名后面与 C/Java 风格相反
参数与返回值参数特点// 多个相邻参数类型相同时可以只在最后一个写类型 func max(a, b int) int { if a b { return a } return b } // 变长参数底层切片实现 func sum(numbers ...int) int { total : 0 for _, num : range numbers { total num } return total }返回值特点// 多返回值 func split(n int) (quotient, remainder int) { return n / 3, n % 3 } // 带命名返回值 func divide(a, b float
(result float64, err error) { if b 0 { return 0, errors.New(division by zero) } return a / b, nil }
函数调用规则不支持默认参数不支持按名称传参调用时参数个数和类型必须严格匹配包级函数首字母大写才可被其他包调用小写函数仅限本包内使用
匿名函数与闭包// 立即执行的匿名函数 func() { fmt.Println(Anonymous function called) }() // 赋值给变量的匿名函数 square : func(x int) int { return x * x } fmt.Println(square(
) // 输出16 // 闭包示例 func counter() func() int { count : 0 return func() int { count return count } }注意闭包捕获的是变量的引用不是值快照。
在循环中启动 goroutine 并引用循环变量时需特别注意。
函数作为一等公民Go 中函数可以作为值传递type PlayerAction func(int) int func processPlayerInput(action PlayerAction, input int) int { return action(input) } func doubleInput(x int) int { return x * 2 } // 使用示例 result : processPlayerInput(doubleInput,
// 返回10
方法与函数的区别// 这是方法有接收者 func (t T) Name() string { return t.name } // 这是普通函数 func GetName(t T) string { return t.name }关键区别方法有接收者函数没有方法不能脱离类型实例调用值接收者方法可被指针或值调用指针接收者方法只能由指针调用
常见错误与
注意事项错误写法func add(int a, int b) int—— 会报错syntax error: unexpected int正确写法func add(a, b int) int接口实现要求*T实现的接口T值不能直接赋值给该接口变量循环变量陷阱在循环中启动 goroutine 并引用循环变量所有 goroutine 可能看到的都是最后一次迭代的值Go 语言的函数设计简洁高效通过极简的函数模型支撑起整套并发与接口设计是理解 Go 语言编程范式的关键。
❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧