函数

函数

上一节:第五篇 常量
下一节:第七篇 包

这是本Golang系列教程的第6篇。

什么是函数?

函数是执行特定任务的代码块。 函数接受输入,对输入执行一些计算并生成输出。

函数声明

在 Go 中声明一个函数的语法为:

func functionname(parametername type) returntype {  
 //function body
}

函数声明以关键字 func 开头,后面是函数名字,接着是在 ( 和 ) 之间指定的参数列表,然后是函数的返回类型。指定参数的语法为参数名称后面跟着参数类型。可以指定任意数量的参数,形式为: (parameter1 type, parameter2 type)。最后是由 {} 以及它们之间的代码块组成的函数体。

在一个函数中,参数和返回值是可选的。因此下面的语法也是合法的函数声明:

func functionname() {  
}

函数的例子

让我们写一个函数,它以单个产品的价格和产品数量作为输入参数,并以总价格(单个产品的价格与产品数量的乘积)作为返回值。

func calculateBill(price int, no int) int {  
    var totalPrice = price * no
    return totalPrice
}

上面的函数接受两个 int 类型的输入参数:priceno,并返回 totalPriceprice no 的乘积)。返回值的类型也是 int

如果连续的参数具有相同的类型,我们可以避免每次都写出它们的类型,只需要在结束的时候写一次就可以了,比如:price int, no int 可以写成:price, no int。 于是上面的函数可以写成:

func calculateBill(price, no int) int {  
    var totalPrice = price * no
    return totalPrice
}

现在我们已经准备好了一个函数,我们可以从代码中的某个地方调用它。 调用函数的语法是functionname(parameters)。 上面的函数可以用代码调用。

calculateBill(10, 5)  

下面是完整的程序,它调用 calculateBill 并计算总价格。

package main

import (  
    "fmt"
)

func calculateBill(price, no int) int {  
    var totalPrice = price * no
    return totalPrice
}
func main() {  
    price, no := 90, 6
    totalPrice := calculateBill(price, no)
    fmt.Println("Total price is", totalPrice)
}

上述程序将打印结果:

Total price is 540  

多个返回值

一个函数可以返回多个值。让我们写一个函数 rectProps,它接受一个矩形的长和宽,并返回该矩形的面积和周长。矩形的面积为长与宽的积。周长为长与宽的和的 2 倍。

package main

import (  
    "fmt"
)

func rectProps(length, width float64)(float64, float64) {  
    var area = length * width
    var perimeter = (length + width) * 2
    return area, perimeter
}

func main() {  
     area, perimeter := rectProps(10.8, 5.6)
    fmt.Printf("Area %f Perimeter %f", area, perimeter) 
}

如果一个函数有多个返回值,那么这些返回值应该用小括号()括起来,比如:func rectProps(length, width float64)(float64, float64) 接受两个类型为 float64 的参数(lengthwidth),并且同样返回两个类型为 float64 的返回值。上面程序的输出为:

Area 60.480000 Perimeter 32.800000  

命名返回值

可以给一个函数的返回值指定名字。如果指定了一个返回值的名字,则可以视为在该函数的第一行中定义了该名字的变量。

上面的 rectProps 函数可以用具名返回值的形式重写如下:

func rectProps(length, width float64)(area, perimeter float64) {  
    area = length * width
    perimeter = (length + width) * 2
    return //no explicit return value
}

在上面的函数中,area perimeter 是具名返回值。注意 return 语句没有指定任何返回值。因为在函数声明时已经指定 areaperimeter 是返回值,在遇到 return 语句时它们会自动从函数中返回。

(译者注:在Go中,有返回值的函数,无论是具名返回值还是普通形式的返回值,函数中必须包含 return 语句。)

空指示符

下划线_表示空指示符blank identifier。它可以用于代替任何类型的任何值。让我们看看如何使用空指示符。

我们知道上面定义的函数 rectProps 返回矩形的面积area和周长perimeter。如果我们只需要获取 area 而想要忽略 perimeter该怎么办呢?这时候就可以使用空指示符。

下面的程序仅接收 rectProps 返回的 area

package main

import (  
    "fmt"
)

func rectProps(length, width float64) (float64, float64) {  
    var area = length * width
    var perimeter = (length + width) * 2
    return area, perimeter
}
func main() {  
    area, _ := rectProps(10.8, 5.6) // perimeter is discarded
    fmt.Printf("Area %f ", area)
}

area, _ := rectProps(10.8, 5.6) 这一行,我们仅仅获取了 area,而使用空指示符 _来忽略第二个返回值perimeter

若文章对你有帮助,可以点赞或打赏支持我们。发布者:Aurora,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/6-%e5%87%bd%e6%95%b0/

(1)
AuroraAurora站点维系者
上一篇 2023年 12月 5日 下午6:05
下一篇 2023年 12月 5日 下午6:07

相关推荐

  • shopt

    文章目录shopt补充说明语法选项参数实例 shopt 显示和设置shell操作选项 补充说明 shopt命令 用于显示和设置shell中的行为选项,通过这些选项以增强shell易…

    入门教程 2024年 3月 4日
  • top

    文章目录top补充说明语法选项top交互命令实例 top 显示或管理执行中的程序 补充说明 top命令 可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行…

    入门教程 2024年 3月 11日
  • alias

    文章目录alias概要主要用途选项返回值例子知识点错误用法Q&A注意其他参考链接 alias 定义或显示别名。 概要 alias [-p] [name[=value] ..…

    入门教程 2023年 12月 6日
  • tload

    文章目录tload补充说明语法选项参数实例 tload 显示系统负载状况 补充说明 tload命令 以图形化的方式输出当前系统的平均负载到指定的终端。假设不给予终端机编号,则会在执…

    入门教程 2024年 3月 11日
  • git 工作流程

    本章介绍了git的大致工作流程

    2024年 4月 30日
  • kernelversion

    文章目录kernelversion补充说明语法 kernelversion 打印当前内核的主版本号 补充说明 kernelversion命令 用于打印当前内核的主版本号。 语法 k…

    入门教程 2023年 12月 19日
  • SSH 连接出现 Connection reset by peer 如何解决

    以上错误一般是因为以下原因导致: 服务器改了密码,试过密码多次后出现 服务器安全策略,无法下发ssh-key-id 调试方法一般是 ssh -v root@ip_addr 文章目录…

    2021年 8月 6日
  • Helm | Helm 回滚

    文章目录helm rollback简介可选项从父命令继承的命令请参阅 helm rollback 回滚发布到上一个版本 简介 该命令回滚发布到上一个版本 回滚命令的第一个参数是发布…

    入门教程 2023年 12月 14日
  • pssh

    文章目录pssh补充说明安装pssh选项实例 pssh 批量管理执行 补充说明 pssh命令 是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中…

    入门教程 2024年 3月 1日
  • dump

    文章目录dump补充说明语法选项参数实例 dump 用于备份ext2或者ext3文件系统 补充说明 dump命令 用于备份ext2或者ext3文件系统。可将目录或整个文件系统备份至…

    入门教程 2023年 12月 7日

发表回复

登录后才能评论
Translate »