Go 函数 指针

786 阅读1分钟

函数

  • func 定义函数
  • 可以返回多个值
  • 可以给返回的参数起名
func eval(a, b int, op string) (int, error) {
   switch op {
   case "+":
      return a + b, nil
   case "-":
      return a - b, nil
   case "/":
      return div(a, b)
   case "*":
      return a * b, nil
   }
   return -1, fmt.Errorf("no supported op")
}

func div(a, b int) (q int, r error) {
   return a / b, nil
}
  • 函数作为参数 函数式编程
func getNum(op func(int, int) int, a, b int) int {
   return op(a, b)
}

func main() {
   getNum(func(a int, b int) int {
      return a + b
   }, 1, 1)
}
  • 可变参数列表
func sum(numbers ...int) int{
   return -1;
}
  • 没有默认参数 可选参数 函数重载

指针

func main() {
   a := 2
   var pa *int = &a
   *pa = 3
   fmt.Println(a)
}
  • Go语言只有值传递一种方式
  • 可以传递指针 实现引用传递
func main() {
   a, b := 1, 2
   swap(&a, &b)
}

func swap(a, b *int) {
   *a, *b = *b, *a
}