从零学习go语言(四)

80 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第13天,点击查看活动详情

函数

func funcName(params) result{
   
}
  1. func关键字
  2. funcName函数名称
  3. params函数参数
  4. ()后可以有函数的返回值result
func main() {
   result := sum(1, 2)
   fmt.Println(result)
}
func sum(a int, b int) int {
   return a + b
}

多值返回

Go语言的函数可以返回多个值(第一个值返回函数的结果,第二个值返回函数出错的信息)

func main() {
   result, err := sum(1, 2)
   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println(result)
   }
}
func sum(a, b int) (int, error) {
   if a < 0 || b < 0 {
      return 0, errors.New("a或b不能为负数")
   }
   return a + b, nil
}

命名返回参数

函数的返回值可以命名为一个参数,在函数体中可以使用。

func sum(a, b int) (sum int, err error) {
   if a < 0 || b < 0 {
      return 0, errors.New("a或b不能为负数")
   }
   sum = a + b
   err = nil
   return
}

可变参数

函数的参数的数量是可变的

func add(params ...int) int {
   sum := 0
   for_,i := range params {
      sum += i
   }
   return sum
}

注意:如果定义的函数中既有普通参数又有可变参数,可变参数一定要放在参数列表的最后一个。

包级函数

  1. 函数名称首字母小写代表私有函数,只有在同一个包中才可以被调用
  2. 函数名称首字母大写代表公有函数,不同的包也可以调用
  3. 任何一个函数都会从属于一个包

匿名函数

sum2 := func(a,b int) {
   return a + b
}
fmt.Println(sum2(1,2))

匿名函数可以做到在函数中再定义函数,也可以称为内部函数。再函数内定义的内部函数,可以使用外部函数的变量等,这种方式也称为闭包

方法

方法必须要有一个接收者,这个接收者是一个类型,方法与类型绑定在一起,称为这个类型的方法。

type Age uint

func (age Age) String() {
   fmt.Println("age",age)
}

func main (){
    age := Age(25)
    age.String()//输出age25
}