03 函数
Posted zhangjian0092
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03 函数相关的知识,希望对你有一定的参考价值。
1. 函数定义
import "errors" func Add(a int, b int) (ret int, err error) { if a < 0 || b < 0 { err = errors.New("必须是非负数") } return a + b, nil // 支持多重返回 }
多个参数值类型相同可以简写
func Add(a, b int) int { return a + b }
2. 函数调用
//导入函数所在的包,然后直接调用即可 import Mymath Mymath.Add(1, 2)
3.不定参数
func Myfunc(args ...int){ // ...int是一个语法糖,只能作为函数参数存在,且必须是最后一个 for _, val := range(args){ fmt.Println(val) } }
不定参数的传递
func Myfunc(args ...int) { for _, val := range(args) { fmt.Println(val) } } func Myfunc1(args ...int) { Myfunc(args...) // 将所有不定参数传递 } func Myfunc2(args ...int) { Myfunc(args[1:]...) // 传递片段 }
任意类型的不定参数
func Myprintf(args ...interface{}) { for _, val := range args{ switch val.(type) { case int: fmt.Println(val, "int") case string: fmt.Println(val, "string") } } }
3.多值返回
func foo()(n int, l int) { n = 1 l = 2 fmt.Println(n, l) return //return不带任何值的时候,返回对应的返回值变量的值 } func main() { a, b := foo() fmt.Printf("in main a = %d b is %d", a, b) }
4匿名函数和闭包
func main() { f := func(x ,y int) int { // 匿名函数赋值给变量 return x + y } f(1, 2) func(a, b int){ //匿名函数直接执行 fmt.Println(a + b) }(1,2) }
以上是关于03 函数的主要内容,如果未能解决你的问题,请参考以下文章