原文链接 http://www.limerence2017.com/2019/09/11/golang11/#more

函数简介

函数是编程语言中不可缺少的部分,在golang这门语言中函数是一等公民。也是使用好golang的必备技能。
看下golang函数的格式

1
2
3
func 函数名(函数参数)返回值类型{

}

一个简单的函数

1
2
3
func HelloFunc(str string) string{
return str
}

该函数返回传入的字符串,函数调用如下

1
fmt.Println(Hello("Nice to meet you!"))

返回多个返回值

golang 允许函数返回多个返回值

1
2
3
4
5
6
7
8
func Add(a int, b int) (ret int, err error) {
if a < 0 || b < 0 {
//不允许负数相加
err = errors.New("should be non-negative numbers")
return
}
return a + b, nil
}

函数返回两个数相加的结果和错误,下面调用这个函数

1
2
3
4
5
6
res, err:=Add(100, 200) 
if err != nil{
fmt.Println("add error !")
return
}
fmt.Println("add result is ", res)

函数内部可以使用标签

1
2
3
4
5
6
7
8
9
func myfunc() {
i := 0
HERE:
fmt.Println(i)
i++
if i < 10 {
goto HERE
}
}

goto会跳转到fmt.Println(n)处继续执行,达到i循环自增并输出的效果

函数可变参数

golang 中允许函数使用可变参数

1
2
3
4
5
6
//不定参数
func myfuncv(args ...int) {
for _, arg := range args {
fmt.Println(arg)
}
}

可变参数的写法是参数名后加上…类型,我们调用一下这个函数

1
myfuncv(1,2,4,7,8)

可变参数可以通过切片获取元素。再写一个函数

1
2
3
4
5
6
func myfuncv3(args ...int) {
//按原样传递
myfuncv(args...)
//按切片传递
myfuncv(args[1:]...)
}

这个函数内部将参数用展开传递给myfuncv,args是一个切片,展开用…,这样myfuncv就可以继续处理了。
下面来个复杂点的,带interface参数的函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func MyPrintf(args ...interface{}) {
for _, arg := range args {
//interface 任意类型,
//arg.(type)只能用于switch结构
switch arg.(type) {
case int:
fmt.Println(arg, "is an int value.")
case string:
fmt.Println(arg, "is a string value.")
case int64:
fmt.Println(arg, "is an int64 value")
default:
fmt.Println(arg, "is an unknown type")
}
}
}

MyPrintf函数将参数args遍历后根据类型判断,做出相应输出。interface类型的变量后边加上.(type)就可以返回他的类型。接口的相关知识之后讲解。
目前就介绍到此,我的公众号

golang(06)函数介绍的更多相关文章

  1. MySQL常用函数介绍

    MySQL常用函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.操作符介绍 1>.操作符优先级 mysql; +----------+ | +----------+ ...

  2. python strip()函数 介绍

    python strip()函数 介绍,需要的朋友可以参考一下   函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 rm删除 ...

  3. PHP ob_start() 函数介绍

    ob_start() 函数介绍: http://www.nowamagic.net/php/php_ObStart.php ob_start()作用: http://zhidao.baidu.com/ ...

  4. Python开发【第三章】:Python函数介绍

    一. 函数介绍 1.函数是什么? 在学习函数之前,一直遵循面向过程编程,即根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复 ...

  5. row_number() OVER(PARTITION BY)函数介绍

      OVER(PARTITION BY)函数介绍 开窗函数               Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个 ...

  6. select与poll函数介绍

    select与poll函数介绍 在所有依从POSIX的平台上,select函数使我们可以执行I/O多路转接.传向select的参数告诉内核: 1)我们所关心的描述符 2)对于每个描述符我们所关心的状态 ...

  7. swift1.2语言函数和闭包函数介绍

    swift1.2语言函数和闭包函数介绍 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护. swift1.2语言函 ...

  8. golang的函数

    在golang中, 函数是第一类值(first-class object), 即函数可以赋值与被赋值. 换言之, 函数也可以作为ReceiverType, 定义自己的method. 实例: http. ...

  9. ZLG_GUI配置与函数介绍

    http://www.docin.com/p-825479457.html ZLG_GUI配置与函数介绍

随机推荐

  1. Python模块struct(二进制数据服务)

    struct模块 Python没有专门处理字节的数据类型.但由于b'str'可以表示字节,所以,字节数组=二进制str. 而在C语言中,我们可以很方便地用struct.union来处理字节,以及字节和 ...

  2. es实战之数据导出成csv文件

    从es将数据导出分两步: 查询大量数据 将数据生成文件并下载 本篇主要是将第二步,第一步在<es实战之查询大量数据>中已讲述. csv vs excel excel2003不能超过6553 ...

  3. 水果商城 ( Iview+ SSM + MySQL )

    因为时间原因,只做了后台,前台本来是打算使用 uni 框架 的. 有文档.E-R流程图.数据库文件. 项目源码地址:https://github.com/oukele/MyProject-Two

  4. 一例tornado框架下处理上传图片并生成缩略图的例子

    class coachpic(RequestHandler): @gen.coroutine def post(self): picurl = self.request.files[] print(& ...

  5. 【vs2015发布程序】

    1.选中网站右键,选择发布Web应用 2.发布目标选择自定义 3.配置文件名称 4.发布方式选择File System,选择发布的程序存放路径 5.

  6. 题解 [ZJOI2008]树的统计Count

    [ZJOI2008]树的统计Count Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u ...

  7. vue实例之组件开发:图片轮播组件

    一.普通方式: 其中,index是关键. <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  8. JavaScript关系运算符

    ★关系运算符 通过关系运算符可以比较两个值之间的大小关系 如果关系成立它会返回true,如果关系不成立立即返回false   ㈠大于号 (>) ⑴判断符号左侧的值是否大于右侧的值 ⑵如果关系成立 ...

  9. 给PS添加ICO格式文件

    为什么你的ps不能直接打开favicon.ico文件呢?因为你没有安装识别ico的格式插件. 安装步骤如下: 下载格式文件:https://pan.baidu.com/s/1lE0El1VtDqD5l ...

  10. 洛谷 P1135 奇怪的电梯 (dfs)

    题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮:开 ...