Go基础之函数

  • go语言中的函数可以有多个返回值

//带余除法
func div(a, b int) (int, int) {
    return a/b, a%b
}

  • 可以给函数的返回值取名字 ,取名后可以直接在函数中当做变量来进行赋值

func div(a, b int) (q, r int) {
    q = a/b
    r = a%b
    return q,r  //或直接 return
}

  • go中的函数的双值返回多用于错误处理,即返回一个所需的值和一个error类型,相比与直接用log.Panic(),它可以不终止程序向下运行 

//四则操作
func eval(a, b int ,op string) (int, error) {
    switch op {
        case "+" :
            return a+b, nil
        case "-" :
            return a-b, nil
        case "*" :
            return a*b, nil
        case "/" :
            return a/b, nil
        default :
            return -1, fmt.Errorf("unsupported operation : %s", op)                
    }
}

注:func Errorf(format string, a ...interface{}) error

  Errorf根据format参数生成格式化字符串并返回一个包含该字符串的错误。

  • go语言是一种函数式编程语言,函数是go语言中的一等公民,函数的参数,返回值以及函数体内都可以存在函数 

func add(a,b int) int {
    return a+b
}
func apply(op func(int, int) int, x, y int) int {    // 以函数作为参数
    return op(x,y)
}
func main(){
    fmt.Println(apply(add,9,8))
}

或直接在调用函数时,实现一个匿名函数

func apply(op func(int, int) int, x, y int) int {
    return op(x,y)
}

func main(){
    fmt.Println(apply(func(a,b int) int {
            return a+b },9,8))
}

  • go中的函数没有默认参数 可选参数没有函数重载 操作符重载,但有可变参数列表,即(变量 ...类型),此时类型钱的变量是一个此类型的数组

func sum (num ...int) int {   //可变参数列表,这里的变量num是一个任意长度的 int类型的数组
    sum := 0
    for i := range num {
        sum += num[i]
    }
    return sum
}
func main(){
   
    fmt.Println(sum(1,2,3,4,5))
}

注:Java中的函数重载

  1. 就是方法名相同,方法参数的个数和类型不同,通过个数和类型的不同来区分不同的函数;
  2. 方法的重载跟返回值类型和修饰符无关,Java的重载是发生在本类中的,重载的条件实在本类中有多个方法名相同,
  3. 但参数列表不同(可能是,参数个数不同参数类型不同)跟返回值无关;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值