news 2026/7/9 11:54:56

GO_函数_1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GO_函数_1

Go 函数基础语法

一、函数定义标准格式

Go 语言函数固定定义格式:

go

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

核心规则

  1. 函数定义位置:放在main前后都可以,Go 编译器会自动识别
  2. 访问权限
    • 函数名首字母小写= 私有(只能在当前包使用)
    • 函数名首字母大写= 公共(可被其他包调用)

二、无参无返回值函数

最简单的函数形式,不需要参数,也没有返回值。

go

package main import "fmt" // 定义无参无返回值函数 func MyFunc() { a := 666 fmt.Println("a = ", a) } func main() { // 函数调用 MyFunc() }

三、普通参数列表(有参无返回值)

1. 基础带参函数

go

// 有参无返回值 func MyFunc01(a int) { a = 111 fmt.Println("a = ", a) }

2. 重要概念

  • 形参:定义函数时写在括号里的参数(形式参数)
  • 实参:调用函数时传入的具体值
  • 参数传递方向:只能实参 → 形参
  • 同类型参数简写

go

// 多个相同类型参数可以只写一次类型 func test(a, b, c int) { }

四、不定参数列表(重点)

Go 支持可变参数,类似其他语言的...语法。

1. 不定参数定义格式

go

func 函数名(参数名 ...类型) { }

2. 示例代码

go

package main import "fmt" // 不定参数 int 类型 func MyFunc01(a ...int) { // 方式1:for 循环遍历 for i := 0; i < len(a); i++ { fmt.Printf("a[%d] = %d \n", i, a[i]) } // 方式2:range 迭代(推荐) for i, data := range a { fmt.Printf("a[%d] = %d\n", i, data) } } func main() { MyFunc01() // 不传参 MyFunc01(1, 2, 3, 4) // 传多个参 }

3. 不定参数规则

  • 不定参数必须放在形参列表的最后一个
  • 函数内部可以把不定参数当作切片使用

五、不定参数的传递

可以把一个函数的不定参数,完整 / 切片式传递给另一个函数。

go

package main import "fmt" func myfunc(tmp ...int) { for _, data := range tmp { fmt.Println("data = ", data) } } func test(args ...int) { myfunc(args...) // 全部传递 myfunc(args[:2]...) // 只传递前两个元素 } func main() { test(1, 2, 3, 4) }

六、函数返回值

1. 无参有一个返回值

go

// 方式1:只写返回值类型 func myfunc01() int { return 666 } // 方式2:给返回值起名(推荐) func myfunc02() (result int) { result = 666 return // 直接return即可,不用写return result }

2. 多个返回值(Go 特色)

Go 函数支持多个返回值,是最常用的写法之一。

go

// 方式1:只写类型 func myfunc01() (int, int, int) { return 1, 2, 3 } // 方式2:官方推荐写法(给返回值起名) func myfunc02() (a int, b int, c int) { a, b, c = 111, 222, 333 return }

3. 返回值规则

  • 有返回值的函数必须使用 return
  • return 会中断函数执行并返回结果
  • 多个返回值可以只写类型,也可以同时写变量名 + 类型
  • 若已定义返回值变量,可直接return

本章节核心总结

  1. 函数格式:func 函数名(参数) (返回值) { 函数体 }
  2. 不定参数格式:...类型,必须放最后
  3. 不定参数遍历推荐用for _, data := range 变量
  4. 支持多返回值,官方推荐给返回值起名
  5. 有返回值必须写return
  6. 函数名大写 = 公开,小写 = 私有

总结

函数定义、无参无返回值、普通参数、不定参数、参数传递、单返回值、多返回值,是 Go 函数最核心的第一部分知识。

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

从Codex核心原理到实战:AI编程助手完整指南与项目集成

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Qwen 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 最近在学习和实践AI编程助手时&#xff0c;很多开发者都提到了吴恩达老师关于Codex的讲解。确实&#xff0c;他的教学风格以清晰、细致…

作者头像 李华
网站建设 2026/7/9 11:53:40

Sunshine游戏串流平台完整指南:5分钟搭建你的专属云游戏系统

Sunshine游戏串流平台完整指南&#xff1a;5分钟搭建你的专属云游戏系统 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 厌倦了在不同设备间切换游戏进度&#xff1f;想要在客厅大…

作者头像 李华
网站建设 2026/7/9 11:49:45

如何快速掌握小程序反编译:用unveilr轻松提取源码的完整指南

如何快速掌握小程序反编译&#xff1a;用unveilr轻松提取源码的完整指南 【免费下载链接】unveilr-v2.0.0 小程序反编译工具 项目地址: https://gitcode.com/gh_mirrors/un/unveilr-v2.0.0 你是否曾想过&#xff0c;那些优秀的小程序背后藏着怎样的设计秘密&#xff1f;…

作者头像 李华
网站建设 2026/7/9 11:45:41

小体积,高集成:阿尔泰科技MTCP-7500-D刀片式Modbus TCP模拟量采集器,助力工业、高校、科研高效采集

在当今自动化控制领域&#xff0c;数据的实时采集与高效传输是确保系统稳定运行的关键。阿尔泰科技推出的MTCP-7500-D一体式Modbus TCP协议8通道模拟量采集模块&#xff0c;凭借其卓越的性能和灵活的应用&#xff0c;成为了众多工程师和系统集成商的首选。‌高速采集&#xff0…

作者头像 李华
网站建设 2026/7/9 11:44:42

汽修场景一体式与分体式螺杆机方案特点与差异

对比前提与适用场景 一体式&#xff08;集成式&#xff09;与分体式是螺杆空压机的两类主流结构形态&#xff0c;二者没有绝对的优劣之分&#xff0c;实用性高低完全取决于使用场景、空间条件、运维能力与长期规划。在汽保行业&#xff0c;两类结构的选型分化最为明显&#xff…

作者头像 李华
网站建设 2026/7/9 11:44:07

深度学习的梯度消失与梯度爆炸

深度学习的“成长烦恼”&#xff1a;系统解析梯度消失与梯度爆炸 在深度神经网络的训练过程中&#xff0c;梯度消失&#xff08;Vanishing Gradient&#xff09;与梯度爆炸&#xff08;Exploding Gradient&#xff09;是阻碍模型收敛的两大核心难题。这两个问题本质上源于反向传…

作者头像 李华