函数
做一件事通常需要用到很多步骤,每个步骤可以分解为独立的函数,这些函数以后可能会用到
- 函数声明
- Go在标准文档中列出了标准库每个包中声明的函数
- 例如:
- rand 包的Intn: func Intn(n int) int
- 它的用法: num :=rand.Intn(10)
- 使用func关键字声明函数
- 在Go里,大写字母开头的函数、变量或者其它标识符都会被导出,对其它包可用
- 小写字母开头的就不行。
- 形式参数:parameter
- 实际参数:argument
(1)函数声明——多个参数
- 函数的参数可以是多个:
- func Unix(sec int64,nses int64)Time
- 调用: future := time.Unix(12622780800,0)
- 函数声明时。如果多个形参类型相同,那么该类型只写一次即可:
- func Unix(sec int64,naec int64)Time
- 简化是可选的
(2)函数声明——返回多个值
- Go的函数可以返回多个值:
- countdown,err:=strconv.Atoi("10")
- 该函数的声明如下:
- func Atoi(s string)(i int,err error)
- 函数的多个返回值需要括号括起来,每个返回值名字在前,类型在后。声明函数时可以把名字去掉,只保留类型:
- func Atio(s string)(int,error) (3)函数声明——可变参数函数
- Println是一个特殊的函数,它可以接受一个、两个甚至多个参数,参数类型还可以不同:
- fmt.Println("Hello,playground")
- fmt.Println(186,"seconds")
- Println的声明是这样的:
- func Println(a...interface{})(n int,err error)
- ...表示函数的参数的数量是可变的。
- 参数a的类型为interface{},是一个空接口。
- ...和空接口组合到一起就可以接受任意数量、类型的参数了
2.编写函数 例:
func kelvinToCelsius(k float64) float64 {
k -= 273.15
return k
}
func main() {
kelvin := 294.0
celsius := kelvinToCelsius(kelvin)
fmt.Print(kelvin, "° K is ", celsius,"° C")
}
- 函数按值传递参数
- 同一个包中声明的函数在调用彼此时不需要加上包名。