1 Go函数入门:打开代码复用的魔法盒
每个Go程序员的一天,都是从一声func开始的。想象一下,如果你每天早晨起床需要重复执行同样的动作:睁眼、打哈欠、关闹钟、摸手机……如果生活能像编程一样,把这些动作封装成一个func MorningRoutine()函数,该有多美好!
这就是函数的魅力——一次定义,多次调用,告别重复劳动。在Go语言中,函数远不止是一段可复用的代码块,它是构建复杂程序的基石,是沟通不同包之间的桥梁,更是并发编程的起点。
作为一门现代化的编程语言,Go的函数设计既保留了C语言的清晰直白,又加入了多返回值、闭包等现代特性,让代码既简洁又富有表达力。
1.1 函数的基本结构
Go语言中定义函数需要使用func关键字,其基本组成可以概括为以下几个部分:
- func关键字:声明这是一个函数
- 函数名:遵循标识符命名规则,首字母大小写决定其可见性
- 参数列表:指定输入参数及其类型
- 返回值列表:指定返回值类型
- 函数体:包含具体的执行逻辑
下面是一个简单的函数示例:
package main
import "fmt"
// 定义一个加法函数
func add(a int, b int) int {
return a + b
}
func main() {
result := add(2, 3)
fmt.Printf("2 + 3 = %d\n", result) // 输出:2 + 3 = 5
}
这个简单的例子展示了Go函数最基本的形式——接收两个整数参数,返回它们的和。
2 函数参数的花式玩法
2.1 类型简写:让代码更简洁
当多个相邻参数属于同一类型时,Go允许我们省略前面参数的类型声明,只保留最后一个参数的类型。这不是什么神奇的语法糖,而是Go设计者为了代码简洁性考虑的小贴心。
// 啰嗦写法
func add(a int, b int) int {
return a + b
}
// 简洁写法
func add(a, b int) int {
return a + b
}
看到区别了吗?在第一个例子中,我们为每个参数都显式声明了类型,而第二个例子中,我们只在最后一个参数处声明类型,前面的参数可以省略类型说明。
2.2 可变参数:接受不确定数量的输入
有时候,我们不知道函数会接收多少个参数,比如计算一系列数字的和。这时,可变参数就派上用场了。
可变参数本质上是一个切片,它必须是参数列表中的最后一个参数,通过在类型前加...来标识。
package main
import "fmt"
func sum(numbers ...int) int {
total := 0
for _, num := range numbers {
total += num
}
return total
}
func main() {
fmt.Println(sum(1, 2, 3)) // 输出:6
fmt.Println(sum(1, 2, 3, 4, 5)) // 输出:15
// 也可以传递一个切片
numbers := []int{1, 2, 3, 4, 5}
fmt.Println(sum(numbers...)) // 输出:15
}
需要注意的是,可变参数在函数内部实际上是一个切

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



