news 2026/4/16 18:13:34

HoRain云--Go语言函数详解:从入门到精通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--Go语言函数详解:从入门到精通

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

Go 语言函数详解

一、函数声明与基本语法

二、参数与返回值

参数特点

返回值特点

三、函数调用规则

四、匿名函数与闭包

五、函数作为一等公民

六、方法与函数的区别

七、常见错误与注意事项


Go 语言函数详解

Go 语言中的函数是核心构建块,用于封装可重复使用的代码逻辑。下面我将从基础到高级全面介绍 Go 函数。

一、函数声明与基本语法

func 函数名(参数列表) (返回值列表) { // 函数体 }

关键特点:

二、参数与返回值

参数特点

// 多个相邻参数类型相同时,可以只在最后一个写类型 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 float64) (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(4)) // 输出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, 5) // 返回10

六、方法与函数的区别

// 这是方法(有接收者) func (t T) Name() string { return t.name } // 这是普通函数 func GetName(t T) string { return t.name }

关键区别

七、常见错误与注意事项

  1. 错误写法func add(int a, int b) int—— 会报错:syntax error: unexpected int正确写法func add(a, b int) int

  2. 接口实现要求*T实现的接口,T值不能直接赋值给该接口变量

  3. 循环变量陷阱:在循环中启动 goroutine 并引用循环变量,所有 goroutine 可能看到的都是最后一次迭代的值

Go 语言的函数设计简洁高效,通过极简的函数模型支撑起整套并发与接口设计,是理解 Go 语言编程范式的关键。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 16:12:28

k8s 部署 Sentinel-dashboard 1.8.9

k8s 部署 Sentinel-dashboard 1.8.9 一.拉取镜像并推送到私库 这里选择的是docker hub已经有人制作好的Sentinel镜像 docker pull bladex/sentinel-dashboard:1.8.9 #检查是否拉取成功 docker images | grep bladex/sentinel#重新给镜像打tag docker tag bladex/sentinel-da…

作者头像 李华
网站建设 2026/4/16 16:09:31

python基于python的抑郁症患者看护系统

目录抑郁症患者看护系统的设计背景系统功能概述技术实现方案系统优势与应用价值代码示例(情绪分析部分)未来改进方向项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作抑郁症患者看护系…

作者头像 李华
网站建设 2026/4/16 14:22:16

金融服务公司如何大规模构建上下文智能

作者:来自 Elastic Karen Mcdermott 从数据访问到数据普及。 麦肯锡对数据普及的愿景标志着企业对数据思考方式的微妙但深远的转变。到 2030 年,成功不再来源于为员工提供更好的仪表板或更复杂的分析工具,而在于将智能直接嵌入系统、工作流和…

作者头像 李华
网站建设 2026/4/16 14:26:00

巴豆酰化如何重塑对组蛋白修饰与转录调控的认知?

一、为何巴豆酰化被视为一种新型关键组蛋白修饰?蛋白质翻译后修饰是调控其结构与功能的精密度机制,其中组蛋白修饰通过改变染色质状态,对基因转录等核心生命过程实施表观遗传学调控。长期以来,磷酸化、乙酰化等经典修饰类型已得到…

作者头像 李华
网站建设 2026/4/8 20:31:28

Python list 高级用法全解析:从高效操作到实战优化

Python list 高级用法全解析:从高效操作到实战优化 列表(list)作为Python中最常用的可变序列类型,不仅支持增删改查等基础操作,还提供了丰富的高级特性。掌握这些高级用法,能大幅提升代码的简洁性、执行效…

作者头像 李华