Golang学习笔记-1.6 函数

xunk1900 · · 651 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

本文系第六篇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 返回值列表段声明了返回值,在函数体中不需要声明变量,直接等于值即可。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:xunk1900

查看原文:Golang学习笔记-1.6 函数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

651 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传