正确处理“切片结构”?

我创建了一个切片结构。但是,为什么我不能追加或输出值?


package main


import "fmt"


type Slicestruct []struct {

    num      []int

    emptynum []int

}


func main() {

    slicestruct := &Slicestruct{

        {[]int{1, 2, 3}, []int{}},

        {[]int{4, 5, 6}, []int{}},

    }


    // is working:

    fmt.Println(slicestruct)


    // isn't working:

    fmt.Println(slicestruct[0].num[0])


    // isn't working:

    slicestruct[0].emptynum = append(slicestruct[0].emptynum, 99)

}

错误消息为:“无效操作:切片结构[0](类型*切片结构不支持索引)”


紫衣仙女
浏览 68回答 1
1回答

慕容森

您需要在获取元素之前取消引用指针(*slicestruct)[0]因为它是您要从中访问元素的实际切片,而不是指针。对于指向数组的指针(不是此处的切片),此步骤将自动完成。下面是有关指向切片和数组的指针的相关问题:指向切片和数组的指针或者,可以删除 when 声明变量,使其不是指针类型。在我们在这里看到的简短示例中,没有什么需要指针。通常,指向切片类型的指针的合法使用很少见。&
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go