首页 > 其他分享 >golang不定参数

golang不定参数

时间:2022-08-24 23:01:53浏览次数:54  
标签:... f1 args golang 参数 func 不定

函数定义

首先来看如何定义一个不定参数的函数:

1

2

func YourFun(v... interface{}){

}

该函数定义,定义了一个接受任何数目任何类型参数的函数。这里特殊的语法是三个点“...”,在一个变量后面加上三个点后,表示从该处开始接受不定参数,不同于python,golang的不定参数如果将这里"interface{}" 替换成某一确定类型,那么其就只能接受该类型的不定参数。

 

解引用slice

当要传递若干个值到不定参数函数中得时候,可以手动书写每个参数,也可以将一个slice传递给该函数:

1

YourFunc (YourSlice...)

通过"..."可以将slice中得参数对应的传递给函数。相当于python中得“*args”。

这里要注意的是,解引用slice目前只能在不定参数函数传递参数时使用,在其他地方使用会报错。

 

package main

import "fmt"

func f1(args ...int) {
    for _, v := range args {
        fmt.Println(v)
    }
}

func main() {

    f1()
    f1(1)
    f1(1, 2, 3)
}

任意类型的不定参数

interface{} : 空接口类型,因为任意类型都实现了空接口,因此可以将任意类型对象赋值给空接口。

func f1(args ...interface{}) {
    for _, v := range args {
        fmt.Println(v.(int))//这里使用了接口类型断言
    }
}
不定参数的传递

假设args是一个不定参数,则可以将该参数传递给其他具有不定参数的函数

func f1(args ...int) {
    f2(args...)
    f2(args[1:]...)
}

 
func f2(args ...int) {
    //
}

 

标签:...,f1,args,golang,参数,func,不定
From: https://www.cnblogs.com/youxin/p/16622577.html

相关文章

  • 函数参数
    一、默认值参(实参)如果不打算传入值参,可以预先给参数指定默认值例如:1.函数调用时不传参使用默认值 运行结果为:2.函数调用时传参,会覆盖指定的默认值运行结果为: ......
  • gcc编译器的常用命令行参数
    在学习常用的gcc命令行参数前,先了解gcc在执行编译工作的过程1、预处理,生成.i的文件[预处理器cpp]2、将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs]3......
  • golang运行grpc示例项目报错:exec: "C:\\Users\\User\\AppData\\Local\\Temp
    golang运行grpc示例项目报错:exec:"C:\Users\User\AppData\Local\Temp\go-build4227870276\b001\exe\server":filedoesnotexist文件找不到,经过排查,发现是编译的文件......
  • kafka的producer配置参数
    主要介绍下kafka的producer配置参数,只取了其中的一部分常用的,后续的有时间,也会补充一些,更多的详细参数,可以参考《kafka官网》,参数的内容,主要是选取《apachekafka实战》书......
  • @PathVariable和@RequestParam的区别 获取请求参数的四种方式
    @PathVariable和@RequestParam的区别获取请求参数的四种方式请求路径上有个id的变量值,可以通过@PathVariable来获取 @RequestMapping(value="/page/{id}",method......
  • 服务器性能参数学习与总结
    服务器性能参数学习与总结总体说明在不考虑奸商和回扣的的情况下:同时间段购买的机器,价钱越高,配置越高,机器的性能越好.其实服务器与PC机器一样,高性能往往意味着......
  • C++ 默认参数
    1.C++支持函数的默认参数,C语言不支持;2.默认参数只能放在最后面。#include<iostream>#include<windows.h>#include<string>usingnamespacestd;voidscorePri......
  • 过滤器(过滤器只能最多有两个参数)
    过滤器就类似于是模版语法内置的内置方法django内置有60多个过滤器我们不需要学这么多了解10个左右就差不多了后面碰到了再去记忆基本语法{{数据|过滤器:参数}}转......
  • 离线解压安装 golang
    1、下载golang安装包curl-Ohttps://go.dev/dl/go1.19.linux-amd64.tar.gz2、解压安装rm-rf/usr/local/go&&tar-C/usr/local-xzfgo1.19.linux-amd64.tar.......
  • 04-React路由5版本(高亮, 嵌套, 参数传递... )
    React-Router-Dom(路由版本[5])简介React的一个插件库用于实现SPA应用基于React的项目基本都用API<BrowserRouter><HashRouter><Route><Redirect><Link><Na......