0Pricing
Go Academy · 课时

函数基础与签名

参数、返回类型与调用约定

函数基础与签名 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 函数基础与签名
  2. 多个返回值
  3. 可变参数函数
  4. defer、匿名函数与闭包
← 返回 Go Academy