1、函数语法
func 函数名 (形参列表) (返回值类型列表) { 执行语法... return 返回值列表 }
举例:
// 函数返回两个数的最大值 func max(num1 int, num2 int) int { var result int if num1 > num2 { result = num1 } else { result = num2 } return result }
注意:如果返回一个值时,返回值类型列表,可以不写()
2、函数返回多个值
// 函数交换值 func swap(str1 string, str2 string) (string, string) { return str2, str1 }
注意:
a. 函数的形参列表可以是多个,返回值列表也可以是多个(如果返回多个值时,在接受时,希望忽略某个返回值,则使用 _ 符号表示占位忽略)
b. 首字母大写该函数可以被本包文件和其他包文件使用,类似public,首字母小写,只能被本包文件使用,其他包文件不能使用,类似private
c. 如果希望函数内的变量能修改函数外的变量,可以传入变量的地址&,函数内以指针的方式操作变量,从效果上类似引用
3、给函数起别名
type 自定义数据类型名 数据类型 //相当于起了一个别名
举例:
type myfunc func(int,int) int
4、支持函数返回值命名
func cal(a int, b int) (sum int, sub int) { sum = a + b sub = a - b return }
5、Go支持可变参数
func main() { res := sum(10, 20, 30) fmt.Printf("res=%d\n", res) } func sum(a int, args ...int) int { sum := a for i := 0; i < len(args); i++ { sum += args[i] } return sum }
args是slice,通过args[index]可以访问各个值。