美文网首页
Golang学习笔记-1.6 函数

Golang学习笔记-1.6 函数

作者: xunk1900 | 来源:发表于2018-07-10 23:10 被阅读0次

    本文系第六篇Golang语言学习教程

    声明函数

    语法

    func name(parametername type) returntype {
        //函数体(具体实现的功能)
    }
    

    函数声明包括:
    函数名name:自定义的函数名
    形式参数列表():()中定义,描述了函数的参数名以及参数类型
    返回值列表rerurntype:描述了函数返回值的变量以及类型
    函数体{}:具体实现功能的代码

    函数声明释义
    函数的声明以关键词func开始,后面紧跟自己定义的函数名name(函数名)
    函数的参数列表定义在()之间,
    返回值的类型定义在returntype(返回值列表)处,
    包含在{}之间的就是函数体。
    注:声明一个参数的语法为参数名 参数类型,声明多个参数采用(参数名 参数类型, 参数名 参数类型)的形式。

    函数中参数列表和返回值并非必须的,是可以省略的。
    例:以下函数声明也是有效的

    func testfunc(){
        //此函数不需要输入参数,且没有返回值
    }
    

    示例函数

    //平分糖果的函数,输入参数是总共的糖果数量和人的数量,两者的商为每人分的数量,作为返回值
    func Candy(total int, people int) int {  //参数类型相同时可写成(total, people int)
        var avg = total / people  //平均值 = 总数  /  人数
        return avg  //返回平均值
    }
    

    上述有两个整型的输入,totalpeople,返回值为avg,也是整数类型。
    现在已经定义了一个函数,需要在程序中调用这个函数。调用函数的语法为:name(parametername),如下:

    Candy(20, 5)
    

    完成了函数的声明与调用后,就可以写出一个完整的程序,将每个人分到的糖果输出:

    package main
    
    import "fmt"
    
    //平分糖果的函数,输入参数是总共的糖果数量和人的数量,两者的商为每人分的数量,作为返回值
    func Candy(total int, people int) int {  //参数类型相同时可写成(total, people int)
        var avg = total / people
        return avg
    }
    
    func main(){
        avg := Candy(20, 5)
        fmt.Println("Everyone can get", avg)
    }
    

    以上程序运行结果为:

    Everyone can get 4

    多返回值

    Go语言支持一个函数有多个返回值。
    例:

    package main
    
    import (  
        "fmt"
    )
    
    //求长方形周长和面积的函数,输出参数是长和宽,周长是长和宽之和的两倍,面积是长和宽的乘积
    func rectangle(length,width int)(int, int) {
        var perimeter= (length + width) * 2
        var area= length * width
        return perimeter, area
    }
    
    func main (){
        perimeter, area := rectangle(20, 5)
        fmt.Println("the perimeter is", perimeter, "and the area is", area)
    }
    

    如果一个函数有多个返回值,必须用()括起来,以上程序中两个返回值分别为perimeterarea
    以上程序运行结果为:

    the perimeter is 50 and the area is 100

    若只想调用一个返回值,则将另一返回值用_代替:
    perimeter, _ := rectangle(20, 5)

    命名返回值

    从函数中可以命名一个返回值,一旦命名了返回值,可以认为这些值在函数的第一行就被声明变量,在函数体中不需要声明。
    上面的rectangle函数可以写成:

    func rectangle(length,width int)(perimeter, area int) { //在第一行中命名返回值,声明变量
        perimeter= (length + width) * 2
        area= length * width
        return  //不需要指定返回值,默认返回 perimeter, area
    }
    

    仔细对比上面两种写法发现,命名返回值在 rerurntype 返回值列表段声明了返回值,在函数体中不需要声明变量,直接等于值即可。

    以上为学习Golang函数篇

    相关文章

      网友评论

          本文标题:Golang学习笔记-1.6 函数

          本文链接:https://www.haomeiwen.com/subject/mcgguftx.html