登录
首页 >  Golang >  Go问答

GoLang 中的结构体数组访问

来源:stackoverflow

时间:2024-03-25 21:42:35 488浏览 收藏

Go 语言中,无法直接通过数组索引访问结构体数组的元素。这是因为数组索引操作会尝试对指针进行取消引用,而直接使用数组名会返回一个指针。为了正确访问结构体数组中的元素,需要使用指针取消引用,例如 `(*array)[i]`。

问题内容

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不支持索引)


解决方案


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

*array[i] 会尝试取消引用 [i]

(*array)[i] 会取消引用您的指针 array

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

今天关于《GoLang 中的结构体数组访问》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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