/*
格式:
func function_name( [parameter list] ) [return_types]{
   函数体
}

func:func声明
function_name:函数名称
[parameter list]:参数列表
return_types:返回类型,不需要返回值的,return_types可以不写。
函数体:函数体

*/


package main

import (
   "fmt"
)


func main() {
   //定义局部变量
   var a int = 55555
   var b int = 66666
   var result int

   //调用函数 (a和b实参)
   result = max(a, b)

   //调用函数
   c, d := exchange("gxm", "saili")
   fmt.Println(c, d)

   fmt.Printf( "最大值是 : %d\n", result )
}

//函数定义,返回一个值(a和b形参)
func max(a, b int) int {
   //定义局部变量
   var maxnum int

   if (a > b){
      maxnum = a
   } else {
      maxnum = b
   }
   return maxnum
}

func exchange(c, d string) (string, string) {
   return d, c
}


/*
1、函数参数传递类型有值传递 和 引用传递
2、函数作为值
getSquareRoot := func(x float64) float64 {
      return math.Sqrt(x)
   }
3、函数闭包
4、函数方法
 */