前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go 三个点(...)用法

Go 三个点(...)用法

作者头像
孤烟
发布2020-09-27 11:09:47
3.1K0
发布2020-09-27 11:09:47
举报
文章被收录于专栏:golang开发笔记golang开发笔记

众所周知,Go语言是严格类型语言,而开发的时候又遇到传入参数不定的情况,怎么办?

这里的三个点(...),就给我们编程人员带来很大的灵活性,具体如下

函数可变数量参数

可参考https://github.com/guyan0319/...

示例

代码语言:javascript
复制
package main

import "fmt"

func main() {
    //multiParam 可以接受可变数量的参数
    multiParam("jerry", "herry")
    names := []string{"jerry", "herry"}
    multiParam(names...)
}
func multiParam(args ...string) {
    //接受的参数放在args数组中
    for _, e := range args {
        fmt.Println(e)
    }
}

需要注意的是,可变参数是函数最右边的参数,普通参数放在左侧,可以0到n个。如

代码语言:javascript
复制
package main

import "fmt"

func main() {
   //multiParam 可以接受可变数量的参数
   multiParam("jerry", 1)
   multiParam("php", 1, 2)
}
func multiParam(name string, args ...int) {
   fmt.Println(name)
   //接受的参数放在args数组中
   for _, e := range args {
      fmt.Println(e)
   }
}

可变函数的参数

s如果使用s...符号解压缩切片,则可以将切片直接传递给可变参数函数。在这种情况下,不会创建新的切片。

示例

代码语言:javascript
复制
package main

import "fmt"

func main() {
    //multiParam 可以接受可变数量的参数
    names := []string{"jerry", "herry"}
    multiParam(names...)
}
func multiParam(args ...string) {
    //接受的参数放在args数组中
    for _, e := range args {
        fmt.Println(e)
    }
}

还有一种情况就是通过append合并两个slice,

代码语言:javascript
复制
    stooges := []string{"Moe", "Larry", "Curly"}
    lang := []string{"php", "golang", "java"}
    stooges = append(stooges, lang...)
    fmt.Println(stooges)//[Moe Larry Curly php golang java]

数组文字

在数组文字中,...符号指定的长度等于文字中元素的数量。

代码语言:javascript
复制
    stooges := [...]string{"Moe", "Larry", "Curly"}
    arr := [...]int{1, 2, 3}
    fmt.Println(len(stooges))
    fmt.Println(len(arr))

这里... 也可以不用。

go命令

go描述软件包列表时,命令使用三个点作为通配符。

此命令测试当前目录及其子目录中的所有软件包。

代码语言:javascript
复制
$ go test ./...

参考:

https://yourbasic.org/golang/...

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数可变数量参数
  • 可变函数的参数
  • 数组文字
  • go命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档