Golang函数-不定参数列表和多返回值函数

                             作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.不定参函数

1>.不定参数的产生背景

  在定义函数的时候根据需求指定参数的个数和类型,但是有时候如果无法确定参数的个数,此时我们就可以通过"不定参数列表"来解决这个问题,Go语言的不定参数列表和Python中的"*args"有着异曲同工之妙。

  Go语言使用不定参数列表语法格式如下:
    func 函数名(数据集合 ...数据类型)

2>.不定参数的案例

package main

import (
"fmt"
) /*
不定参函数定义:
计算N个整形数据的和
*/
func sum(arr ...int) int {
value := 0
/*
使用数组下标进行遍历
*/
//for index := 0; index < len(arr); index++ {
// value += arr[index]
//} /*
使用range关键字进行范围遍历,range会从集合中返回两个数:
第一个是对应的坐标,赋值给了匿名变量"_"
第二个对应的是值,赋值给了变量"data"
*/
for _, data := range arr {
value += data
}
return value
} func main() {
/*
我们在调用函数时可以指定函数参数的个数不尽相同。
*/
fmt.Println(sum(1, 2, 3))
fmt.Println(sum(1, 2, 3, 4, 5))
fmt.Println(sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
}

二.多返回函数

package main

import (
"fmt"
) /*
函数的返回值是通过函数中的return语句获得的,return后面的值也可以是一个表达式,只要返回值类型和定义的返回值列表所匹配即可。
Go语言支持多个返回值。
*/
func test() (x int, y float64, z string) { return 18, 3.14, "尹正杰"
} func main() { /*
如果函数定义了多个返回值,就需要使用多个变量来接收这些返回值
可以使用匿名变量("_")来接收不使用的变量的值,因此我们无法将匿名变量的值取出来
*/
a, _, c := test()
fmt.Println(a)
fmt.Println(c) }

Golang函数-不定参函数的更多相关文章

  1. C++传递不定参函数

    定义不定参数函数,要用到下面这些宏: va_start(ap, farg): 初始化一个va_list变量ap,farg是第一个形参 va_arg(ap, type): 获取(下)一个type类型的参 ...

  2. js中给函数传参函数时,函数加括号与不加括号的区别

    <!doctype html><html><head><script> function show() { alert("123") ...

  3. go基础之不定参函数

    指定类型参数 任意类型参数的变参 go语言同其他编程一样也提供了对变参函数的支持.本文简单讲解一下go中变参函数的使用方法. 指定类型参数 不定参数是指函数传入参数的个数为不确定数量,个数需要在调用的 ...

  4. Python学习教程(learning Python)--2.3 Python自定义函数传参函数设计

    Python里自定义子函数时,可以在调用时携带一些参数到子函数里去处理.具体用法结构如下: def func(arguments): statement statement etc. 定义子函数一定要 ...

  5. Golang函数-匿名函数与闭包函数

    Golang函数-匿名函数与闭包函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  6. python函数传参是传值还是传引用?

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

  7. [Java]_函数传参的疑惑与思考

    问题来源于leetcode上的两道题 Path Sum I && II,分别写了两个dfs. void dfs(TreeNode node , int sum , ArrayList& ...

  8. Python学习教程(learning Python)--2.3.3 Python函数型参详解

    本节讨论Python下函数型参的预设值问题. Python在设计函数时,可以给型参预设缺省值,当用户调用函数时可以不输入实参.如果用户不想使用缺省预设值则需要给型参一一赋值,可以给某些型参赋值或不按型 ...

  9. 不定参数函数原理以及实现一个属于自己的printf函数

    一.不定参数函数原理 二.实现一个属于自己的printf函数 参考博文:王爽汇编语言综合研究-函数如何接收不定数量的参数

随机推荐

  1. JDBC 存储过程

    存储过程 DROP PROCEDURE IF EXISTS `addUser`; CREATE PROCEDURE `addUser` (),in birthday date,in money flo ...

  2. Vue - 监听页面刷新和关闭

    一,在 created中 注册 页面刷新和关闭事件 created() {  window.addEventListener('beforeunload', e => this.test(e)) ...

  3. zookeeper和eureka的区别在哪?

    zookeeper和eureka的区别在哪?传统的关系型数据库是ACID(原子性,一致性,独立性,持久性), nosql数据库是CAP(强一致性,可用性,分区容错性),分布式系统只能3进2,三个选两个 ...

  4. Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。

    Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离.

  5. Codeforces1301D

    其实感觉这道题在D简单了(但我都没做到这一题,路径最多的方式只有一种,将所有的边都走一遍,从第一行开始,向右走到头,然后向左回来,向下一格,向右走到头,然后上下左重复直到第一列,如此重复直到最后一行, ...

  6. 「ZJOI2007」捉迷藏

    题目描述 给出一棵\(N\)个有色(黑白,黑色对应关灯,白色对应开灯)节点的树以及\(M\)次操作,每次操作将改变一个节点的颜色或者求出树上最远的两个白点距离 基本思路 \(60pts\)做法 这道题 ...

  7. 算法设计与分析 - 李春葆 - 第二版 - pdf->word v1

    章─概论 练习题 . 下列关于算法的说法中正确的有( ).Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模糊Ⅳ.算法执行后一定产 ...

  8. windows服务使用和控制启停

    https://www.cnblogs.com/mq0036/p/7875864.html

  9. Android LowMemoryKiller原理分析

    copy from : http://gityuan.com/2016/09/17/android-lowmemorykiller/ frameworks/base/services/core/jav ...

  10. APIView 的请求生命周期

    目录 APIView 的请求生命周期 请求解析模块 响应渲染模块 序列化组件 Django 配置 """ 1)应用是否需要在INSTALLED_APPS中注册 在没有使用 ...