原文链接 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. VMware提示此主机支持Intel VT-x,但Intel VT-x处于禁用状态怎么解决

    本文链接:https://blog.csdn.net/weixin_40816738/article/details/90146770 ThinkPad笔记本1.开机按F1或Fn+F1进入BIOS,切 ...

  2. maven将本地jar包引入本地maven仓库命令

    一.maven安装命令.cmd窗口,idea中均可 mvn install:install-file -Dfile=F:\coding2pay\pay\lib/wxpay-sdk-.jar -Dgro ...

  3. Web前端开发——HTML基本标签

    标题h1-h6 只有h1到h6,没有h7. 一个页面建议只有一个h1 普通文字大小大约介于h3~h4 段落p 段内换行br 段内分组span 预留格式pre 水平线hr

  4. POJ-3974-Palindrome(马拉车)

    链接: http://poj.org/problem?id=3974 题意: Andy the smart computer science student was attending an algo ...

  5. C#双缓冲解释

    C#双缓冲解释 简单说就是当我们在进行画图操作时,系统并不是直接把内容呈现到屏幕 C#双缓冲 上,而是先在内存中保存,然后一次性把结果输出来,如果没用双缓冲的话,你会发现在画图过程中屏幕会闪的很厉害, ...

  6. Babel 转译 class 过程窥探--------引用

    // Shape 类function Shape(id, x, y) {    this.id = id;    this.setLocation(x, y);}// 设置坐标的原型方法Shape.p ...

  7. vue-cli3的vue.config.js文件配置,生成dist文件

    //vue.config.jsonconst path = require('path'); // const vConsolePlugin = require('vconsole-webpack-p ...

  8. WPF之Treeview实现MVVM双向绑定

    Treeview分别有两个数据模板HierarchicalDataTemplate(层级数据模板)和DataTemplate(数据模板),分别应用于生成子数据项和普通数据项. 在使用过程中,如果对两个 ...

  9. DB 分库分表(3):关于使用框架还是自主开发以及 sharding 实现层面的考量

    当团队对系统业务和数据库进行了细致的梳理,确定了切分方案后,接下来的问题就是如何去实现切分方案了,目前在sharding方面有不少的开源框架和产品可供参考,同时很多团队也会选择自主开发实现,而不管是选 ...

  10. leetcode题目17.电话号码的字母组合(中等)

    题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23"输出: ...