首页 > 其他分享 >golang之函数

golang之函数

时间:2024-02-21 16:12:51浏览次数:21  
标签:perimeter 函数 area golang 参数 func 返回值

目录

一、什么是函数

  • 简单来说就是一个特定的方法,通过这个方法产生预期的结果。
  • 函数是一块执行特定任务的代码。一个函数是在输入源基础上,通过执行一系列的算法,生成预期的输出

二、函数的定义

1. 定义函数的语法

func 函数名(参数1 参数1类型,参数2 参数2类型) 返回值类型 {
    // 函数体(代码块)
}

1.1 示例,定义一个计算总价的函数
func calculateBill(price int, no int) int {  
    var totalPrice = price * no // 商品总价 = 商品单价 * 数量
    return totalPrice // 返回总价
}

2. *****************函数中的参数列表和返回值并非是必须的,所以下面这个函数的声明也是有效的***************
func test1() {  
    // 译注: 表示这个函数不需要输入参数,且没有返回值
}

3. 若参数或者返回值都为同一个类型的,则可以简写
func 函数名(参数1,参数2 参数类型...) 返回值类型 {
    // 函数体(代码块)
}

三、函数的返回值

  • 注意:函数的返回值不能直接调用,必须先用变量接收后,再使用这个接收了返回值的变量
  • 想接收一个函数的返回值,该函数有几个返回值必须要声明几个变量来接收,也可以用匿名变量(或者叫空白符) _ 来接收某个返回值

1. 多个返回值

  • go中是支持多个返回值的,返回值类型用括号括起来即可
1. 语法是

func 函数名(参数1 参数1类型,参数2 参数2类型) (返回值1类型,返回值2类型) {
    // 函数体(代码块)
    return 值1,值2...
}

1.1 示例,定义一个计算矩形的周长和面积的函数

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) 
}

2. 命名返回值

  • 在定义函数时,若指定了返回值的变量名,则在函数体中,也不用重新声明该返回的变量,不需要再明确指定返回值
1. 若返回值都为同一个类型的,则可以简写
func 函数名(参数1,参数2 参数类型) (返回值1,返回值2 返回值类型) {
    // 函数体(代码块)
}

1.1 如下面的rectProps方法
func rectProps(length float64, width float64)(area float64, perimeter float64) {  
    area = length * width
    perimeter = (length + width) * 2
    return // 不需要明确指定返回值,默认返回 area, perimeter 的值
}

1.1.1 可以简写为:
func rectProps(length, width float64)(area, perimeter float64) {  
    area = length * width  // 直接赋值,不用声明
    perimeter = (length + width) * 2  // 直接赋值,不用声明
    return // 不需要明确指定返回值,默认返回 area, perimeter 的值
}

四、函数的参数

1. 可变长参数

  • 和python不同的是,go中没有位置参数和关键字参数的概念,go中都是按照位置传参
1. go中保存多个参数用的是 ...

func 函数名(参数 ... 参数类型)(返回值 ... 返回值类型) {
    // 函数体(代码块)
}


package main

import (  
    "fmt"
)

func test1(a ...int) {  
    fmt.Println("a :", a)
}


func main() {  
    test1(1,2,3,4,5,6)
}

// 打印结果:  a : [1 2 3 4 5 6]

标签:perimeter,函数,area,golang,参数,func,返回值
From: https://www.cnblogs.com/Mcoming/p/18025484

相关文章

  • C++限制函数最大执行时间
    背景C++调用某些硬件操作(如TPU推理)可能存在超时风险,需要限制函数的执行时间。思考异步执行免不了开线程,如何限制join的最大时间是关键。设计如下函数:boolInfer(uinttimeout_ms)根据输入的timeout_ms参数,按时完成返回true超时返回false。实现使用std::mutex配合std::con......
  • 玩转C语言:深入理解输入输出函数的奥秘
    ​✨✨欢迎大家来到贝蒂大讲堂✨✨......
  • 【Go-Lua】Golang嵌入Lua代码——gopher-lua
    嵌入式8篇文章0订阅订阅专栏Lua代码嵌入GolangGo版本:1.19首先是Go语言直接调用Lua程序,并打印,把环境跑通packagemainimportlua"github.com/yuin/gopher-lua"funcmain(){ L:=lua.NewState() deferL.Close() //go err:=L.DoString(`print("gogogo!")`) iferr!=n......
  • golang time包和日期函数
    获取当前时间 //获取当前时间对象 timeObj:=time.Now() /*获取当前日期语法一*/ //打印当前日期 fmt.Println(timeObj)//2024-02-2017:50:54.085353+0800CSTm=+0.000323093 //当前年 year:=timeObj.Year() //打印当月 month:=timeObj.Month() //......
  • MySQL——数据处理函数
    MySQL——数据处理函数数据处理函数又被称为单行处理函数,单行处理函数的特点:一个输入对应一个输出.语法格式:select单行处理函数(字段名)from表名;常见单行处理函数转换小写:lower()转换大写:upper()取子串:substr(),语法为substr(字段名,头,尾)。注意:起始下标是从1开......
  • 【C++】判断回文字符串。回文指的是顺读和逆读都一样的字符串。例如,“tot”和“otto”
    //判断字符串是否是回文字符串(考虑大小写,空格和标点符号)boolpalindrome1(string&str){stringret;for(auto&c:str){if(isalpha(c)){if(isupper(c)){ret.push_back(tolower(c));}else{ret.push_back(c);}......
  • python中的内置函数zip函数
    关于zip()函数,有几点要讲的。首先,官方文档中,它是这样描述的:Makeaniteratorthataggregateselementsfromeachoftheiterables.Returnsaniteratoroftuples,wherethei-thtuplecontainsthei-thelementfromeachoftheargumentsequencesoriterables.The......
  • golang函数
    函数定义/*函数定义关键字funcfunc函数名(参数参数类型)函数返回值的类型*/funcgetInfo(namestring,ageint)string{ returnname}//函数返回多个返回值:则返回类型括号包裹(返回值类型,类型..),即时返回两个int,也需要(int,int)funcgetNum(xint,statusboo......
  • Flink 增量窗口聚合函数 ReduceFunction(归约函数)和AggregateFunction(聚合函数)
    Flink增量窗口聚合函数定义了窗口分配器,只是知道了数据属于哪个窗口,可以将数据收集起来了;至于收集起来到底要做什么,其实还完全没有头绪。所以在窗口分配器之后,必须再接上一个定义窗口如何进行计算的操作,这就是所谓的“窗口函数”(windowfunctions)。经窗口分配器处理之后,数据可......
  • python不能跳转进入某个函数或模块的一种解决思路
    例如,下图中的get_bucket_mount_root函数可以顺利import进来,但是按ctrl键不能跳转进入这个函数: 一个解决思路是,在vscode终端中,打开python解释器,import上图中的hatbc库,然后用hatbc.__file__命令查找该库的__init__.py文件的路径,按住ctrl键,点击这个路径,即可跳转进入这个__init__.......