在 Go 语言中定义函数
2016 年 7 月 27 日
到目前为止, 本书中的代码都放在了 main
函数里面, 但是在处理诸如环境监测程序等更为大型的程序时, 把问题拆分成更小的部分将会非常有用。 使用多个不同的函数组织代码能够令代码更易于理解、复用和维护。
传感器显示的温度数据应该使用人类能够理解的单位。 假设传感器基于开氏温标提供数据, 其中 0°K 为绝对零度, 也就是理论上的最低温度。 代码清单 12-1 展示了一个将开氏度转换至摄氏度的函数。 在定义了这个转换函数之后, 我们就可以在每次需要进行同样的温度转换时复用该函数。
代码清单 12-1 将开氏度转换为摄氏度: kelvin.go
package main import "fmt" // kelvinToCelsius 函数会将开氏度转换为摄氏度 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") // 打印出“294°K is 20.850000000000023°C” }
代码清单 12-1 中展示的 kelvinToCelsius
函数接受一个形参, 它的名字为 k
而类型为 float64
。 这个函数的注释也遵循了 Go 语言的惯例, 它先写下了函数的名字, 然后再介绍函数的具体行为。
除此之外, kelvinToCelsius
函数还会通过关键字 return
,将一个 float64
类型的值返回给调用者, 而它的调用者 main
函数则会将其用于初始化 celsius
变量。
另外需要注意的是, 在同一个包中声明的函数在调用彼此时不需要加上包名作为前缀。