gpt4 book ai didi

arrays - 下面的 Go 数组操作是做什么的?

转载 作者:IT王子 更新时间:2023-10-29 01:57:49 28 4
gpt4 key购买 nike

我对以下代码的工作方式感到困惑,尤其是“...”的目的是什么

array = append(array[:i], array[i+1:]...)

最佳答案

线

a = append(a[:i], a[i+1:]...)

通过删除 a 中位置 i 的项目,通过组合从 0 到 i(不包括)和从 i+1 到结束。

您的第二个问题是... 的目的是什么。 append 接受一个 slice 作为第一个参数,以及无限数量的参数,所有参数的类型都是 assignable到其元素的类型。

append定义为

func append(slice []Type, elems ...Type) []Type

写作

a = append(a[:i], a[i+1:]...)

相当于写作

a = append(a[:i], a[i+1], a[i+2], a[i+3], a[i+4]) //and so on, until the end of the slice.

使用 a[i+1:]... 基本上是一种速记语法,正如 Go 规范在 https://golang.org/ref/spec#Passing_arguments_to_..._parameters 中描述的那样:

If f is variadic with a final parameter p of type ...T, then within f the type of p is equivalent to type []T. If f is invoked with no actual arguments for p, the value passed to p is nil. Otherwise, the value passed is a new slice of type []T with a new underlying array whose successive elements are the actual arguments, which all must be assignable to T

Playground

关于arrays - 下面的 Go 数组操作是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45204275/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com