函数基础与签名
参数、返回类型与调用约定
函数基础与签名 是 CoddyKit 上的免费 Go Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Go Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Go Academy 课程共包含 4 节课。
定义函数
在 Go 中,使用 func 关键字定义函数:
func greet(name string) string {
return "Hello, " + name
}参数与实参
参数需要指定类型,并以 name type 的形式列出。多个相同类型的参数可以共享类型注解:
func add(x, y int) int {
return x + y
}
func rect(w, h float64) float64 {
return w * h
}无返回值函数
不返回值的函数只需省略返回类型。当执行到函数末尾时,它会隐式返回:
func printBanner(title string) {
fmt.Println("=====", title, "======")
}调用函数
使用函数名、圆括号以及匹配的实参调用函数:
result := add(3, 4) // 7
fmt.Println(greet("Go")) // Hello, Go
printBanner("Welcome")函数作为一等值
在 Go 中,函数是一等值——可以将函数赋给变量,也可以将其作为实参传递:
apply := func(n int, f func(int) int) int {
return f(n)
}
double := func(n int) int { return n * 2 }
fmt.Println(apply(5, double)) // 10函数类型
可以定义命名的函数类型,以获得更清晰的签名:
type Transform func(int) int
func applyAll(n int, fns []Transform) int {
for _, f := range fns {
n = f(n)
}
return n
}递归函数
Go 支持递归。请注意栈深度——Go 的协程栈会动态增长,但无界递归仍然会导致栈溢出:
func factorial(n int) int {
if n <= 1 {
return 1
}
return n * factorial(n-1)
}函数命名约定
Go 中的函数命名约定:
- 使用
MixedCaps(导出)或mixedCaps(未导出) - 使用简短、面向操作的名称:
New、Get、Parse、Write - 对于简单的获取函数,避免使用
GetX——直接使用X - 布尔谓词:
IsValid、HasPrefix
init() 函数
特殊的 init() 函数会在包加载时、main() 之前自动运行:
- 不接受参数,也不返回任何内容
- 一个包可以包含多个 init() 函数
- 用于执行注册驱动程序等一次性设置
函数与方法
函数不与任何类型关联。方法具有接收者(将在“结构体与方法”中介绍)。两者都使用 func 关键字:
// Function
func max(a, b int) int { ... }
// Method
func (c Counter) Value() int { ... }快速检查
在 Go 中,函数可以返回多个值吗?
回顾:函数基础
Go 函数表达力强且灵活:
func name(params) returnType { }- 相同类型的参数可以共享类型注解
- 函数是一等值
- 可以定义函数类型,以复用函数签名
- 支持递归;init() 会在包加载时运行
下一节:深入了解多返回值。
常见问题解答
「函数基础与签名」课时是免费的吗?
是的 — 「函数基础与签名」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Go Academy 课程的其余内容,请升级到 CoddyKit PRO。 Go Academy 课程共包含 4 节课。
「函数基础与签名」这节课中我会学到什么?
参数、返回类型与调用约定 你通过在浏览器中直接运行的动手代码来练习 Go Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Go Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Go Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「函数基础与签名」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Go Academy 课中编写并运行代码吗?
能。每节 Go Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 函数基础与签名
- 多个返回值
- 可变参数函数
- defer、匿名函数与闭包