go10 函数
为什么需要函数
做一件事通常需要很多步骤,每个步骤可以分解为独立的函数,这些函数以后可能会复用到。
函数声明
Go 在标准库文档中列出了标准库每个包中声明的函数。
例如:
-
rand 包的 Intn:func Intn(n int) int
-
它的用法:num := rand.Intn(10)
使用 func 关键字声明函数:
在 Go 里,大写字母开头的函数、变量或其它标识符都会被导出,对其它包可用。
小写字母开头的就不行。
形式参数:parameter
实际参数:argument
函数声明 – 多个参数
函数的参数可以是多个:
-
func Unix(sec int64, nsec int64) Time
-
调用:future := time.Unix(12622780800, 0)
函数声明时,如果多个形参类型相同,那么该类型只写一次即可:
-
func Unix(sec int64, nsec int64) Time
-
func Unix(sec, nsec int64) Time
这种简化是可选的。
函数声明 – 返回多个值
Go 的函数可以返回多个值:
- countdown, err := strconv.Atoi(“10”)
该函数的声明如下:
- func Atoi(s string) (i int, err error)
函数的多个返回值需要用括号括起来,每个返回值名字在前,类型在后。声明函数时可以把名字去掉,只保留类型:
- func Atoi(s string) (int, error)
函数声明 – 可变参数函数
Println 是一个特殊的函数,它可以接收一个、二个甚至多个参数,参数类型还可以不同:
-
fmt.Println(“Hello, playground”)
-
fmt.Println(186, “seconds”)
Println 的声明是这样的:
-
func Println(a …interface{}) (n int, err error)
-
… 表示函数的参数的数量是可变的。
-
参数 a 的类型为 interface{},是一个空接口。
… 和空接口组合到一起就可以接受任意数量、类型的参数了
【上一讲】go09 类型转换
【下一讲】go11 方法