模块 3 · 第 1 课(共 5)课程中的11/50~10 min
模块课程(1/5)
签名及参数
在 Go 中,函数是用 func 声明的。签名语法不同
来自 C/Java:类型位于参数名称之后,用 a 分隔
空间。这是一个读起来更好的选择——“n of type int”
“int n”。
基本语法
Go
func sum(a int, b int) int {
return a + b
}
func greet(name string) {
fmt.Println("ciao", name)
}没有返回值的函数只是省略返回类型。
相同类型的连续参数
如果多个连续参数共享相同类型,则可以声明 它只在最后一个上出现过一次。这是惯用的,你会在任何地方看到它:
Go
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }导出函数与未导出函数
在 Go 中,可见性由名称决定:以标识符开头 带有大写字母的已导出(从其他包中可见), 其他的对于包来说是私有的。
Go
func Sum(a, b int) int { ... } // esportata
func helper() { ... } // privata al package函数作为值
函数是一流的值:您可以分配它们,传递它们,并且 返回它们。我们将在有关闭包的课程中深入探讨。
Go
op := sum // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5main 和 init:两个特殊名称
func main()是main包的入口点。没有争论, 无返回值。func init()在包启动时自动调用(甚至多个 如果多个文件定义一个文件,则为 1 次)。对于设置很有用;谨慎使用它。
尝试一下
锻炼#go.m3.l1.e1
尝试:0加载中...
定义一个返回 a+b 的函数 sum(a, b int) int,然后在 main 中使用 (3, 4) 调用它。
正在加载编辑器...
显示提示
共享类型:`(a, b int)`。返回类型位于括号之后。
3 次尝试后可用的解决方案
锻炼#go.m3.l1.e2
尝试:0加载中...
定义打印“ciao <name>”的greet(name string)(无返回值)。
正在加载编辑器...
显示提示
如果函数不返回任何内容,则没有返回类型。
3 次尝试后可用的解决方案
Quiz#go.m3.l1.e3
准备好Go 中的参数类型在哪里?
Go
func f(? ?) {}回顾
func name(param type, ...) returnType { ... }。- 在姓名后输入;相同类型的连续参数 → 仅声明一次。
- 大写首字母 = 已导出; 小写 = 包私有。
- 功能是一流的(可分配、可通过)。
main和init是具有特殊语义的保留名称。