Go语言中如何在结构体数组中使用索引?

4
package main

import "fmt"

type Bar struct {
    high float64
    low  float64
}

func main() {
    var bars = []Bar{}
    bars = []Bar{
        {1.0, 2.0},
        {1.1, 2.1},
        {1.2, 2.2},
        {1.3, 2.3},
        {1.4, 2.4},
        {1.5, 2.5},
    }
    fmt.Println(bars)
    testFunction(&bars)
}

func testFunction(array *[]Bar) {
    for i := 0; i < 3; i++ {
        fmt.Println(*array[i])
    }
}

https://play.golang.org/p/MZwaFALHfuy

为什么我不能访问数组行?

无效操作:array[i](类型* [] Bar不支持索引)

1个回答

7

将for循环中的代码行更改为fmt.Println((*array)[i])

*array[i]会尝试对[i]进行解引用操作

(*array)[i]会对指针array进行解引用操作。

工作示例:https://play.golang.org/p/yr6WbtS3Aq_c


函数中的数组不是行索引。由于无法执行 [i][]i],您如何访问行中的第二个元素? - user10078199
fmt.Println((*array)[i].low)。这些是具有高和低值的Bar结构体。虽然您在看起来像数组或切片的东西中对它们进行了初始化,但它们不是数组,而是Bar类型。 - LanceH
我正在查看类似于此帖子上的#7数组 https://dev59.com/Y1bUa4cB1Zd3GeqPB8yr - user10078199

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接