登录
首页 >  Golang >  Go问答

将从索引 1 开始的数组传递给函数

来源:stackoverflow

时间:2024-03-04 15:51:26 474浏览 收藏

你在学习Golang相关的知识吗?本文《将从索引 1 开始的数组传递给函数》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我有这个函数,并且我从 args 获得了需要使用的值

Run: func(cmd *cobra.Command, args []string) {

   ....

    myFunc(args)
}

我需要将 index 1 中的所有参数传递给 myfunc,而不是 0。 当然,我可以循环并从索引 1 创建另一个数组,但是 这会重复除索引 0 之外的几乎所有值,有没有办法在 go 中避免它?


解决方案


是的,只需 slice args 切片,然后传递即可:

myfunc(args[1:])

argsslice,而不是 array。您可以对切片进行(重新)切片,这将是原始切片的连续子部分。例如:

args[1:4]

上面是另一个切片,仅包含 args 中的以下元素:

args[1], args[2], args[3]

上限不包括在内。缺失的上索引默认为长度,缺失的下索引默认为 0。这些都在Spec: Slice expressions中有详细介绍。

请注意,对切片进行切片不会复制元素:它将指向实际保存元素的同一基础数组。切片只是一个小的、类似结构体的标头,其中包含指向底层数组的指针。

请注意,如果 args 为空,则上述情况将导致运行时恐慌。为了避免这种情况,首先检查它的长度:

if len(args) == 0 {
    myFunc(nil) // or an empty slice: []string{}
} else {
    myFunc(args[1:])
}

终于介绍完啦!小伙伴们,这篇关于《将从索引 1 开始的数组传递给函数》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>