gpt4 book ai didi

go - 关于golang数组

转载 作者:IT王子 更新时间:2023-10-29 01:03:14 25 4
gpt4 key购买 nike

a := [...]int{5, 4: 1, 0, 2: 3, 2, 1: 4 }
fmt.Println(a)

结果是 [5 4 3 2 1 0]。怎么样?

a := [...]int{5, 4: 1, 0, 2: 3, 2, 1: 4 ,12,11,10}
fmt.Println(a)

结果是

prog.go:8: duplicate index in array literal: 2
prog.go:8: duplicate index in array literal: 3
prog.go:8: duplicate index in array literal: 4
[process exited with non-zero status]

谁能解释一下这两个结果?

最佳答案

前几天我看到 Dave Cheney 发布了这条推文。我的理解是这样的:

第一个 - Dave 的工作

<number_here>:是数组中的索引。这“设置”了当前索引.. 这就是为什么在进一步声明中必须将索引“重置”回数组中的原因。所以,第一个数字是5 (索引 0),第二个“条目”的索引为 4: .. 所以值(value)1将在索引 4:

5 _ _ _ 1 _
^ index is currently here

..下一个没有索引,但它将在最后一个给出的索引之后继续。这是 4+1 ..所以指数5获取值 0 :

5 _ _ _ 1 0
^ index is here.. it needs to be reset

现在索引将溢出..所以它被设置得更远。下一个是2: .. 所以将值放在下面的值 3 :

5 _ 3 _ 1 0
^ index is here

又是下一个,继续,因为它没有索引:

5 _ 3 2 1 0
^ index is here

那么最后一个的索引是1: .. 值为 4:

5 4 3 2 1 0

第二个 - 你坏掉的。

第二个是相同的 - 但您没有保护当前放置的索引的覆盖。让我们逐步了解它:

5在索引 0 处:

5 _ _ _ _ _ _ _ _
^ index is here

1在索引 4 处:

5 _ _ _ 1 _ _ _ _
^ index is here

0在索引 5(记住,它继续):

5 _ _ _ 1 0 _ _ _
^ index is here

3在索引 2:

5 _ 3 _ 1 0 _ _ _
^ index is here

2在索引 3 处(同样,它继续:

5 _ 3 2 1 0 _ _ _
^ index is here

4在索引 1:

5 4 3 2 1 0 _ _ _
^ index is here ... you're awfully close to overwriting the next value

12在索引 2:

5 4 12 2 1 0 _ _ _
^^^^^ BOOOM

砰..

..你已经覆盖了值 3 并将继续这样做,因为索引是剩余值的位置。这就是问题..

关于go - 关于golang数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25716346/

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