gpt4 book ai didi

go - 多变量分配

转载 作者:行者123 更新时间:2023-12-01 22:35:13 25 4
gpt4 key购买 nike

下面的代码片段使我感到困惑:
v, ok := a[1] // error: assignment count mismatch: 2 = 1
上面的代码由于计数不匹配而引发错误,但是下面的代码片段似乎可以正常工作:

for i, id:= range ids
{
fmt.Printf("%d - ID: %d\n",i,id)
}

这是否意味着 range同时返回索引和值,因此上述代码段可以正常工作?

最佳答案

for循环的range形式在 slice 或映射上进行迭代。

在 slice 上进行范围调整时,每次迭代都会返回两个值:

  • 第一个是 slice 的索引;第二个是 slice 的索引。
  • 第二个是该索引处元素的副本。

  • 假设我们有一个函数来验证数字是否为 prime number,并且我们有一个包含候选数字的数组,然后我们可以通过两种不同的方式调用该函数:

    var prime []int = []int{2, 3, 5, 7, 11, 13, 17, 19, 23}

    func TestIsPrimeByValue(t *testing.T) {
    for _, item := range prime {
    if !IsPrime(item) {
    t.Fail()
    }
    }
    }

    func TestIsPrimeByIndex(t *testing.T) {
    for i := range prime {
    if !IsPrime(prime[i]) {
    t.Fail()
    }
    }
    }

    在第一个循环中,我们迭代数组的 value
    在第二个循环中,我们迭代数组的 index

    关于go - 多变量分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58787230/

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