Go语言快速入门8|青训营

66 阅读2分钟

函数

做一件事通常需要用到很多步骤,每个步骤可以分解为独立的函数,这些函数以后可能会用到

  1. 函数声明
  • Go在标准文档中列出了标准库每个包中声明的函数
  • 例如:
    • rand 包的Intn: func Intn(n int) int
    • 它的用法: num :=rand.Intn(10)
  • 使用func关键字声明函数

微信图片_20230824210850.jpg

  • 在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")
}
  • 函数按值传递参数
  • 同一个包中声明的函数在调用彼此时不需要加上包名。